Ruby返回声明

时间:2019-02-25 13:48:27

标签: ruby

我正在尝试返回与接收电子邮件的用户相对应的UserStubPresenter(嵌套的JSON演示者),假设它们仍存在于系统中。如果它们不再存在,则应该为nil

这是我到目前为止所获得的红宝石。请解释这种语法,并在详细的return语句帮助我。

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

1 个答案:

答案 0 :(得分:2)

有两个重要的方面需要理解。首先,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路径,因此,您的 line 将返回nil –不需要显式的return nil

并假设该行是方法的最后一行,那么您根本不需要return