检查多个变量的nil

时间:2016-04-08 21:29:38

标签: ruby null

许多变量需要一些处理,所以我要检查它们中是否有nil。是否有更有效的方式来编写以下内容?

unless a.nil? || b.nil? || c.nil? || d.nil? || e.nil? || f.nil? || g.nil?
  render 'view'
end

或者我应该避免在一行上检查nil的很多变量?

5 个答案:

答案 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