- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

Ruby

はじめに Edit

Rubyで、Delphiのメソッドポインタ、C#のdelegateみたいなことをする方法。

まとめ(結論) Edit

メソッドポインタ=オブジェクトインスタンス+関数へのポインタ

と仮定すると、Rubyでこれに匹敵するのは、Methodオブジェクトのようです。

詳細:Method - Rubyリファレンスマニュアル

以下、例:

1
2
3
4
5
6
def call(func)
  func.call 1234   # @hage.mage を呼ぶ
end

# @hage.mageのメソッドポインタをcallに渡してみる
call(@hage.method(:mage))

オマケ:putsをメソッドポインタ経由で読んでみる例:

1
2
3
4
5
6
def call(func)
  func.call "call!"
end
call(Kernel.method(:puts))

Kernel.method(:puts).call "mage"

結果:

call!!
mage

No comment. Comments/Ruby/メソッドポインタ(関数ポインタ)を使う方法?

Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2009-03-06 Fri 19:37:03 JST (3571d)