Рубин ответное заявление - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь вернуть UserStubPresenter (вложенный докладчик JSON), соответствующий пользователю, получившему электронное письмо, при условии, что они все еще присутствуют в системе.Если они больше не присутствуют, это должно быть просто nil.

И это то, что у меня есть для рубина.Пожалуйста, объясните этот синтаксис и помогите мне с оператором возврата в деталях.

return UserStubPresenter.new @object.recipient if @options[:shallow].to_bool

1 Ответ

0 голосов
/ 25 февраля 2019

Есть две важные вещи, которые нужно понять.Во-первых, Ruby читает эту строку следующим образом:

return(UserStubPresenter.new(@object.recipient)) if @options[:shallow].to_bool

И сначала он оценивает условие if.Это означает - как Zeitnot уже писал - если @options[:shallow].to_bool верно, то UserStubPresenter.new(@object.recipient) вычисляется и возвращается.

Секунды, если вы не вернетесь явно, то Ruby вернет возвращаемое значение последней оцененнойзаявление.Ваш пример - более короткая версия

if @options[:shallow].to_bool
  return UserStubPresenter.new @object.recipient
else
end

Последнее выражение - это пустой путь else, поэтому ваша эта строка вернет nil - явный return nil не требуется.

А если предположить, что эта строка является последней строкой метода, тогда вам вовсе не нужен return.

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