Более высокий приоритет присваивания означает, что ваше выражение оценивается как (x = 5) if false
, а не x = (5 if false)
.Обратите внимание, что позже это также совершенно правильное выражение.
Выполнено ли каждое конкретное предложение, определяется правилами языка.Например, в троичном операторе a ? b : c
будут выполняться только b
или c
, но не оба.
edit
О разнице
В x = (5 if false)
назначение обрабатывается первым.Но для его завершения нам понадобится левая часть присваивания, которая равна nil
, потому что 5 if false
оценивается как nil
.Итак, выражение эквивалентно x = nil
.
В (x = 5) if false
условный оператор обрабатывается первым.Согласно его правилам, мы должны сначала оценить состояние (false
).Поскольку это false
, больше ничего не нужно делать, а результат оценки - nil
.
Надеюсь, это понятно.