Proc#call
:
ブロックを呼び出し、セマンティクスを呼び出すメソッドに近いものを使用して、ブロックのパラメーターを params の値に設定します。複数の値が 1 つのみを予期する proc に渡されると、警告が生成されます (以前は、これは暗黙のうちにパラメーターを配列に変換していました)。prc.() は、与えられたパラメータで prc.call() を呼び出すことに注意してください。「呼び出し」を隠すのは構文シュガーです。
私はいくつかの調査を行い、メソッド#()
がメソッドの構文糖衣であることが#call
わかりました..以下のエラーを見てください:
module Foo
def self.bar
12
end
end
Foo.()
#undefined method `call' for Foo:Module (NoMethodError)
OP#call
がモジュールFoo
クラスでメソッドを定義したようFoo#call
に、 の試みで呼び出されFoo.()
ます。
いくつかの例を次に示します。
"ab".method(:size).() # => 2
"ab".method(:size).call # => 2
"ab".() # undefined method `call' for "ab":String (NoMethodError)
ここでMatzの発言を参照してください。1.9で導入された object.() 構文で妥協してください...