Duck Typingだガー。
Ruby関連のサイトを見ていると、Duck Typingという聞き慣れたい言葉が。
「アヒルのように歩き,アヒルのように鳴くものはアヒルに違いない」という西洋の格言が由来で、つまり私が愛してやまない実家に預けてある猫ちゃんも、ガーと鳴けばアヒルと見なされるということで、つまりこういうことらしい。
class Duck def say_gaaa p "gaa" end end class Cat def say_gaaa p "nyaaa" end end def use_say_gaaa(obj) obj.say_gaaa end duck = Duck.new cat = Cat.new use_say_gaaa(duck) use_say_gaaa(cat)
結果。
"gaa" "nyaaa"
処理を行うに当たって、該当のオブジェクトがどのクラスのインタンスかではなく、どういうメソッドを持っているか、ということに重点を置く、ということでしょうか。
ウオー、これは便利そうだ。こういう処理をC#とかでやるとクラスを用意して、そのクラスをそれぞれで継承して、なんてやっているので、とても魅力的に映る。