首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3-如何重构这段代码?

Rails 3-如何重构这段代码?
EN

Stack Overflow用户
提问于 2011-04-28 00:40:26
回答 3查看 90关注 0票数 1

我想重构这段根本不枯燥的代码:)

代码语言:javascript
复制
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]中存在(如果存在)哪一个

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-28 00:48:17

如果键中没有关联的值,则哈希将返回nil。因为nilfalse在条件语句中的处理是相同的,所以我们可以非常积极地缩短这个方法。if session[:my_params]确保session[:my_params]不为空。

代码语言:javascript
复制
def my_method
  session[:my_params][:answer] || session[:my_params][:question] if session[:my_params]
end
票数 1
EN

Stack Overflow用户

发布于 2011-04-28 00:47:56

代码语言:javascript
复制
def my_method
  session[:my_params][:answer] || session[:my_params][:question]
end

如果两者都不存在,将返回nil

当然,这假设[:answer][:question]的值不是故意为假的,例如false

票数 0
EN

Stack Overflow用户

发布于 2011-04-28 05:00:05

代码语言:javascript
复制
def my_method
  h = session.fetch(:my_params, {})
  h[:answer] || h[:question]
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5807543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档