Руби, май лав

Jul 29, 2011 12:58

Как все-таки регулярная работа с несколькими различными языками замыливает глаз.
Смотришь в упор и не видишь.

a = "000"
b = 1

if b then
a = "123"
else
a = "456"
end if

puts a
Это совершенно валидный код на Ruby.
Как вы думаете, что будет выведено на экран? ;)

Leave a comment

Comments 8

aldan July 29 2011, 16:18:58 UTC
Видимо, не "123"?

Reply

lost_guadelenn July 31 2011, 11:20:04 UTC
Выведет 000
Птому что в руби блок условия на самом деле такой: if ... [then] ... else ... end
if в конце - условие для исполнения блока, т.е. получаетя вот что
(if b then a=... else a=... end) if puts a
Это специальная сокращенная запись if'a, т.е. сначала выполняется ф-ия puts a, которая возвращает какое-то значение. Это значение проверяется, и, если оно истинно, выполняется то, что стоит перед ифом. И вот так получилось, что ф-ия puts вернула ложь, и блок if не отрабатывает вообще.

Ничего сложного, но есть на вскидку два языка, где конец условия записывается как end if: vbscript и препроцессор c++. Оба приходится переодически использовать. Там if именно конец ифа, а не спец.конструкция, и там бы вывело 123.

Reply

aldan July 31 2011, 17:49:18 UTC
Папа, а с кем ты сейчас разговаривал?

Reply

ext_729697 August 3 2011, 09:41:40 UTC
то есть сначала надо смотреть на хвост, после end-a, и только потом, если он сработает нужным образом, надо смотреть, что получится в скобках? гениально!

Reply


alive_in_rain July 30 2011, 08:18:39 UTC
А мне нравится на разных языках программировать) Голова проветривается, что-то новое узнаешь:)

Reply

lost_guadelenn July 31 2011, 11:27:32 UTC
Мне тоже -) Особый смак, говорят, функциональные языки - хаскель там, скала. Поработать, правда, не удалось еще.

Руби, кстати, очень нравится.
Точнее даже, не сам язык. Сам язык, честно говоря, никакого откровения не принес.
Нравится инфраструктура - на удивление много оказалось готовых production-ready гемов, очень много в гугле инфы.
Капистрано просто охуенен.

Reply

alive_in_rain July 31 2011, 11:33:04 UTC
Ну, руби да откровений никаких не привносит. Просто язык с достаточно хорошим дизайном.
А капистрано да, клевая очень тема:)))

Reply


Leave a comment

Up