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 に答える