Почему возвращается оператор break the conditional operator?

Экспериментируя с условным оператором в ruby,

def nada
  false ? true : nil
end

def err
  false ? true : raise('false')
end

работает, как ожидалось, но

def reflection
  false ? true : return false
end

выдает синтаксическую ошибку , неожиданное keyword_false, ожидает keyword_end

def reflection
  false ? true : return(false)
end

и предпринимается попытка использования скобок синтаксическая ошибка, неожиданный tLPAREN, ожидание keyword_end

, но

def reflection
  false ? true : (return false)
end

работает должным образом, и более подробный if ... then ... else ... end

def falsy
  if false then true else return false end
end

также работает должным образом.

Так что случилось с условным (тернарным) оператором?

12
задан Alec Wenzowski 13 November 2011 в 15:03
поделиться