Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Синтаксический сахар


Автор: niksan 26.7.2010, 14:08
@current_user = current_user_session && current_user_session.user
Что означает данное выражение?

Автор: solenko 27.7.2010, 20:28
Код

unless current_user_session.nil?
  @current_user = current_user_session.user
else
  @current_user = nil  



Автор: source777 27.7.2010, 22:45
solenko, в общем случае твой вариант не эквивалентен оригиналу, например, если current_user_session == false.

niksan, для этой задачи мне больше нравится вариант:
@current_user = current_user_session.user if current_user_session

Однако, есть разница с @current_user = current_user_session && current_user_session.user
Вот код, полностью эквивалентный твоему коду:
Код

if current_user_session
  @current_user = current_user_session.user 
else
  @current_user = current_user_session # эта строка лишняя для большинства случаев применения
end


Добавлено через 2 минуты и 34 секунды
P.S. Твой пример - это не синтаксический сахар, а наоборот - нецелевое использование оператора &&, снижающее читабельность кода.

Автор: fell 28.7.2010, 11:18
вообще && эквивалентно and
что бы присвоение произошло, нужно чтобы оба выражения были true. Вообще таких конструкций не припомню что то. Обычно используют || ~ or

Автор: source777 28.7.2010, 21:51
Цитата(fell @  28.7.2010,  11:18 Найти цитируемый пост)
вообще && эквивалентно and

Фигушки, совсем не эквивалентно, как минимум у них приоритет разный, что в данном примере будет очень заметно, если тупо заменить && на and.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)