メソッドオブジェクトに関する雑記

元ネタのTweetを撮り逃してしまってちょっとネタ元が不安定なんですが、

Rubyって知ってる人が結構いると思うんだけど、

#fooメソッド宣言 
def foo() 
puts 'foo' 
end 

ってメソッドがあったときに

#メソッド呼び出し Javaみたいに()は必須じゃない
foo 

ってだけでメソッドが実行されるんだけど(勿論括弧をつけてもOK)、

# :fooは(コロンを付けたものはシンボル) 
m = method(:foo) 

で引き出したメソッドオブジェクトであるmはメソッドをcallするにあたって

m.call 

ってする必要があるんだよな、面白いもんで(因みに引数がある場合はcallの後ろにひっつければいい)

でもコレってはじめのメソッド呼び出しと一緒じゃなよなぁってツイートされてて当たり前だけどちょっと驚いた