1

尝试了以下

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假的?

对红宝石来说很新,所以保持流畅:)

4

2 回答 2

3

因为它不是 nil,它是一个空数组。

def pkill(process_name, *host)  
  host.nil? # => false
  host # => []
  host.empty? # => true
end

pkill 'blah' 
于 2012-04-18T10:45:09.043 回答
1

你只是想让主机参数可选吗?的预期用途*host是如果您有可变数量的参数。例如,您的方法可以被称为pkill('blah')、 或pkill('blah', 'bloo')pkill('blah', 'bloo', 'bar')等。

如果你只是想说这host不是必需的参数,你应该给它一个默认值。例如,您的方法可能变成

def pkill(process_name, host=nil)  
     puts host.nil?
     puts host
end
于 2012-04-18T11:16:55.457 回答