用什么方法检查:空白?&&!false?

Jay*_*rio -3 ruby ruby-on-rails

我正在寻找一种方法(最好只有一个Rails或Ruby方法),它将验证变量是否为空但不是false(因为我有一些不应该为空的布尔变量?== true,因为它们有值).

说我有四种类型:nil, '', 0, false.

我正在寻找一个相当于以下的简单方法:

(var.nil? || var == '') && var !== false

这是我能想到的最简单的:

var.blank? && var !== false

如果没有其他方法,那么我想我只需要为此创建一个自定义方法.

Ser*_*sev 6

我正在寻找一个相当于以下的简单方法:

var.nil? or var == '' or var == false
Run Code Online (Sandbox Code Playgroud)

你正在寻找的方法是 blank?

def foo1(var)
  var.nil? || var == '' || var == false
end

def foo2(var)
  var.blank?
end

foo1(nil) == foo2(nil) # => true
foo1('') == foo2('') # => true
foo1(false) == foo2(false) # => true
foo1(0) == foo2(0) # => true
Run Code Online (Sandbox Code Playgroud)

编辑后

我正在寻找一个相当于以下的简单方法:

(var.nil? || var == '') && var !== false
Run Code Online (Sandbox Code Playgroud)

是的,只需制作一个自定义方法.或者,如果你感觉特别邪恶,你可以修补FalseClass#blank?以返回相反的价值.

  • @sawa:是的,有点儿.我跳过所有语言绒毛并依赖代码("我希望相当于") (2认同)