Почему истина && «строка» возвращает «строку»

Допустим, у меня есть что-то вроде

true && true #=> true

Что имеет смысл, поэтому я пытаюсь что-то вроде:

true && "dsfdsf" #=> "dsfdsf"

Что удивляет меня, потому что часто я буду делать что-то вродеif something && something и я всегда думал, что это оценивает как истину и вернет истину. Дальнейшие эксперименты делают такие вещи, как:

jruby-1.7.3 :009 > "ad" && "dsf"
 => "dsf" 
jruby-1.7.3 :010 > "ad" && "sdfd" && nil
 => nil 
jruby-1.7.3 :011 > "ad" && nil && "sdf"
 => nil 

создается впечатление, что Ruby возвращает либо последнее значение, если все верно, либо первое ложное значение, которое он находит. Почему он это делает? и это правильная ментальная модель?

Ответы на вопрос(2)

Ваш ответ на вопрос