Ruby-__send__について
Ruby __send__ とは
__send__はObjectのメソッドで、動的なメソッド呼び出しを可能とします。
実行時に呼び出すメソッドの名前を受け取って、対応するメソッドを呼び出すことができます。
sendメソッドでも、動的にメソッドを呼び出すことができますが、ライブラリでは__send__を使うべきであるとRubyリファレンスマニュアルに書いてあります。
send が再定義された場合に備えて別名 __send__ も用意されており、
ライブラリではこちらを使うべきです。
また __send__ は再定義すべきではありません。
__send__の実行例
以下はprivateメソッドを引数で指定して呼び出す例です。
#!/usr/bin/env ruby
class CommandExecuter
def execute(cmd)
__send__(cmd)
end
private
def up
puts "Up"
end
def down
puts "Down"
end
def left
puts "Left"
end
def right
puts "Right"
end
end
c = CommandExecuter.new
c.execute("up")
c.execute("down")
c.execute("left")
c.execute("right")
関連ページ
- Ruby
- Ruby_よく使うのに忘れてしまう基本文法の備忘録
- Rubyのクラスについて
- Rubyのモジュールについて
- Rubyの例外処理について
- RubyのKCODEについて
- Rubyの__send__について
- Rubyのyieldについて