许多变量需要一些处理,所以我要检查它们中是否有nil
。是否有更有效的方式来编写以下内容?
unless a.nil? || b.nil? || c.nil? || d.nil? || e.nil? || f.nil? || g.nil?
render 'view'
end
或者我应该避免在一行上检查nil
的很多变量?
答案 0 :(得分:8)
unless [a,b,c,d,e,f,g].include?(nil)
render 'view'
end
答案 1 :(得分:6)
使用none?
,您可以if
代替unless
:
if [a,b,c,d,e,f,g].none?(&:nil?)
想想看,这可以简化为:
if [a,b,c,d,e,f,g].all?
如果您不介意将false
视为nil
是否有更有效的方式撰写以下内容?
我认为更好的问题是,#34;是否有更多富有表现力的写作方式......"
答案 2 :(得分:2)
render 'view' unless [a,b,c,d,e,f,g].any?(&:nil?)
另一种方式:
render 'view' if [a,b,c,d,e,f,g].index(nil)
答案 3 :(得分:2)
还有一些其他方法:
arr = [a,b,c,d,e,f,g]
render 'view' if arr.compact == arr
答案 4 :(得分:2)
如果您的a,b,c...
是对象(或永远不会false
的东西),您可以这样写:
if a && b && c && d && e && f
render 'view'
end