Синтаксис "if x then y end
" предназначен для многострочных условных выражений, а форма "y if x
" предназначена для кратких однострочных условных операторов. then
необходим в первом случае, чтобы сообщить Ruby, что условие выполнено (поскольку Ruby не требует таких символов, как C), а end
необходимо, чтобы сообщить Ruby, что весь блок if
завершен ( так как это может быть несколько строк).
Вы можете заменить then
точкой с запятой, потому что конец строки также сигнализирует об окончании условия. Вы не можете избавиться от end
с помощью многострочного if
. Либо используйте вторую форму или троичный оператор, если вы хотите получить краткую однострочную строку.
Например, предположим,
x = true
следующее вычислит true и вернет y
x ? y :
=> y
аналогично, это оценивает ложь и ничего не возвращает
!x ? y :
=>
добавить термин после ':' для остального случая
!x ? y : z
=> z