我正在寻找一种方法(最好只有一种Rails或Ruby方法)来验证变量是否为空但不是false
(因为我有一些不应该为空的布尔变量?== true因为他们有价值观。)
说我有四种类型:nil, '', 0, false
。
我正在寻找一个相当于以下的简单方法:
(var.nil? || var == '') && var !== false
这是我能提出的最简单的方法:
var.blank? && var !== false
如果没有其他办法,那么我想我只需要为此创建一个自定义方法。
答案 0 :(得分:6)
我正在寻找一个相当于以下的简单方法:
var.nil? or var == '' or var == false
您正在寻找的方法是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
我正在寻找一个相当于以下的简单方法:
(var.nil? || var == '') && var !== false
是的,只需制作一个自定义方法。或者,如果你感觉特别邪恶,你可以修补FalseClass#blank?
以返回相反的值。
答案 1 :(得分:1)
现在你的问题变得可以理解了,我会回答。
(var.nil? || var == '') && var !== false
可以简化为:
var.to_s.empty?
你不能用一种方法来做,但你可以用两种方法做到。 例如, true
,[]
也会返回{}
。