ruby方法不会返回false
我有一个方法,它返回一个数组(如果它包含任何元素)或false(如果它为nil):ruby方法不会返回false,ruby,return,Ruby,Return,我有一个方法,它返回一个数组(如果它包含任何元素)或false(如果它为nil): def check_for_four @four = [] check_values.each do |key, value| ###check_values return hash with key and values as numbers @four << key if value == 4 end if @four == nil
def check_for_four
@four = []
check_values.each do |key, value| ###check_values return hash with key and values as numbers
@four << key if value == 4
end
if @four == nil
return false
else
return @four
end
end
即使@four数组为空,它也总是返回true。这是为什么?在Ruby中,空数组是“truthy”。例如:
puts "foo" if []
将输出“foo”,但
不会输出任何内容。在Ruby中,空数组是“truthy”。例如:
puts "foo" if []
将输出“foo”,但
不会输出任何内容。您正在检查数组是否为nil(即是
NilClass
的单例实例),这与检查数组是否为空非常不同
要检查数组的空位置,可以调用empty?
,或者如果您确实想检查数组是否为空,也可以使用any?
当然,你也可以做一些事情,比如检查长度/大小是否为零,但我觉得询问你感兴趣的具体事情更为鲁莽。你正在检查数组是否为nil(即是
NilClass
的单例实例),这与检查数组是否为空非常不同
要检查数组的空位置,可以调用empty?
,或者如果您确实想检查数组是否为空,也可以使用any?
当然,你也可以做一些事情,比如检查长度/大小是否为零,但我觉得询问你感兴趣的具体事物更为鲁比。nil和empty不是一回事nil和empty不是一回事
puts "foo" if nil