尝试以下
def pkill(process_name, *host)
puts host.nil? # => false
puts host.empty? # => true
puts host # => nil
puts host[0].nil? # => true
end
现在,如果我致电send("pkill", blah, nil)
,那么host
如何/为什么是假的?
红宝石很新,所以保持顺畅:)
答案 0 :(得分:3)
因为它不是零,所以它是空数组。
def pkill(process_name, *host)
host.nil? # => false
host # => []
host.empty? # => true
end
pkill 'blah'
答案 1 :(得分:1)
您是否只是想让主机参数可选? *host
的预期用途是,如果您有可变数量的参数。例如,您可以调用方法pkill('blah')
,pkill('blah', 'bloo')
或pkill('blah', 'bloo', 'bar')
等。
如果您只是想说host
不是必需参数,则应该给它一个默认值。例如,您的方法可能变为
def pkill(process_name, host=nil)
puts host.nil?
puts host
end