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
Reply
Птому что в руби блок условия на самом деле такой: 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
Reply
Reply
Reply
Руби, кстати, очень нравится.
Точнее даже, не сам язык. Сам язык, честно говоря, никакого откровения не принес.
Нравится инфраструктура - на удивление много оказалось готовых production-ready гемов, очень много в гугле инфы.
Капистрано просто охуенен.
Reply
А капистрано да, клевая очень тема:)))
Reply
Leave a comment