我想重构这段根本不枯燥的代码:)
def my_method
if session[:my_params].try(:include?, :answer)
session[:my_params][:answer]
elsif session[:my_params].try(:include?, :question)
session[:my_params][:question]
end
end有没有一种方法可以隐式返回:answer或:question,这取决于session[:my params]中存在(如果存在)哪一个
发布于 2011-04-28 00:48:17
如果键中没有关联的值,则哈希将返回nil。因为nil和false在条件语句中的处理是相同的,所以我们可以非常积极地缩短这个方法。if session[:my_params]确保session[:my_params]不为空。
def my_method
session[:my_params][:answer] || session[:my_params][:question] if session[:my_params]
end发布于 2011-04-28 00:47:56
def my_method
session[:my_params][:answer] || session[:my_params][:question]
end如果两者都不存在,将返回nil。
当然,这假设[:answer]和[:question]的值不是故意为假的,例如false。
发布于 2011-04-28 05:00:05
def my_method
h = session.fetch(:my_params, {})
h[:answer] || h[:question]
endhttps://stackoverflow.com/questions/5807543
复制相似问题