Могу ли я выполнить условное задание одновременно с использованием Ruby? - PullRequest
3 голосов
/ 26 января 2012

Допустим, я хочу сделать этот псевдокод:

if plan = some_api.get_plan
  return plan
else
  return 'free'
end

Как мне наиболее элегантно сделать это в Rails? Я хочу свести к минимуму звонки на some_api.get_plan.

Ответы [ 2 ]

5 голосов
/ 26 января 2012

В этом случае самый простой код:

return some_api.get_plan || 'free'

Но так как присвоения возвращают присвоенное значение, вы можете выполнять присвоение и условие одновременно (и фактически я делаю это все времясделать мой код более лаконичным).

1 голос
/ 26 января 2012

Вы можете использовать логический оператор OR, чтобы сделать это:

return (plan = some_api.get_plan) || 'free'

Он вернет значение левого выражения (в данном случае присваивания), если оно не nil или false, иначеон вернет значение правильного выражения.

Обратите внимание, что присваивание требуется только в том случае, если plan не является локальной переменной, а является plan= методом установки (например, attr_writer :plan или def plan= val).Если это не так, достаточно return some_api.get_plan || 'free'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...