Работает над | | и && операторы
Я делал что-то, и я нахожу немного запутанным &&
функциональность оператора.
Когда я делаю
5 || 15
=> 5
nil || 15
=> 15
5 || nil
=> 5
Но когда я делаю это с && оператором.
5 && 15
=> 15
nil && 15
=> nil
5 && nil
=> nil
Может кто-нибудь помочь мне понять?
1 ответ
Булевы операторы в ruby являются короткими замыканиями: если возможно определить значение выражения из левого аргумента, правый аргумент не оценивается.
Следовательно, более простая ментальная модель для оценки булева выражения, включающего &&, состоит в рассмотрении первых выражений, включающих только два операнда: левый операнд вычисляется первым; если значение этого операнда равно nil или false, операнд возвращается, а правый операнд не оценивается; если левый операнд - это что-то еще, правый оператор вычисляется и возвращается его значение.
Из этого определения ясно, что, как вы заметили, выражения, включающие логические операторы, не возвращают истину или ложь, а просто истинное значение или ложное значение. Стоит отметить, что это не имеет никакого значения в контексте, где логическое выражение используется только для его истинности или ложности.
Надеюсь, это поможет вам.