インスパイア元:http://blogs.wankuma.com/pinzolo/archive/2008/03/14/127623.aspx
というわけでprivateなメンバを呼び出してみようと思う。
class A
def foo
puts "A#foo"
end
private :foo # fooはprivateです
end
このfooを呼び出すのが目的。
Rubyは、動的な言語だから色々なやりかたがあるみたい。ぱっと思いついたものだけで2通りかな。
まず、その1!無理やりpublicにさせて頂きます。
a = A.new # インスタンス作って
class << a # あなたのfooはpublicですよ~
public :foo
end
a.foo # -> A#foo
無理やりpublicにして呼び出す。カプセル化も何もあったもんじゃありません。
次!!
a = A.new # インスタンス作って
a.send(:foo) # foo呼んでとお願いすると呼べる
うん。普通に呼べた。
ということで、こういうことはしないようにしましょう(