Ruby __send__, instance_eval, instance_exec
privateメソッドでも、 sendやinstance_evalならば実行可能
class A private def a @value = "a" puts @value end end obj = A.new obj.__send__(:a) #=> "a" # instance_evalはブロックを実行可能 obj.instance_eval{ puts(@value + "b") }#=> "ab"
instant_execなら引数をとることが可能
class B private def initialize @x = 3 end end B.new.instance_exec(3){|int| (@x ** 2).times{puts "こんにちは"}} #=> こんにちは こんにちは...