我正在尝试返回与接收电子邮件的用户相对应的UserStubPresenter
(嵌套的JSON演示者),假设它们仍存在于系统中。如果它们不再存在,则应该为nil
。
这是我到目前为止所获得的红宝石。请解释这种语法,并在详细的return语句帮助我。
return UserStubPresenter.new @object.recipient if @options[:shallow].to_bool
答案 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
。