1

Ruby: Private method called for 3:Fixnumおよびprivate method `split' called for nil:NilClass (NoMethodError) という質問は、それぞれおよびオブジェクトのprivate メソッドについて言及splitしています。FixnumNilClass

このプライベートsplitメソッドはモンキー パッチが適用された疑似キーワードですか ( printand などputs)? もしそうなら、それを追加したのは何ですか?また、なぜ既存のメソッド名を使用したのStringですか?

4

1 に答える 1

1

あなたはこれを自分で解決することができます(他の答えを読まなくても):

ruby-1.8.7-p330 :001> 3.method(:split)
#=> #<Method: Fixnum(Kernel)#split> 

私のRubyメソッドルックアップフローPDFバージョン)から、すべてのオブジェクトのメソッドがObject…のインスタンスメソッドで終了することがわかります。これには、が含まれていますKernelKernelしたがって、 (トップレベルの便利なメソッドとして利用できるように多くの場合を追加した)のすべてのインスタンスメソッドも、すべてのオブジェクトのメソッドになります。

Kernel#split削除された1.9以降では、これは当てはまらないことに注意してください。

ruby-1.9.1-p378 :001> 3.method(:split)
#=> NameError: undefined method `split' for class `Fixnum'
#=>     from (irb):1:in `method'
#=>     from (irb):1
#=>     from /Users/phrogz/.rvm/rubies/ruby-1.9.1-p378/bin/irb:16:in `<main>'
于 2011-04-18T02:15:58.870 に答える