ruby中的条件参数,如何检查nil?

时间:2012-04-18 10:43:48

标签: ruby-on-rails ruby optional-parameters

尝试以下

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如何/为什么是假的?

红宝石很新,所以保持顺畅:)

2 个答案:

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