🖥
Ruby — ミミックメソッドとは (メタプログラミングRuby)
ミミックメソッドとは、他のなにかに擬態したメソッドのこと。
人間の眼に、あたかも言語要素のように見えたりするようなやつ。
ただこれは呼び方の問題であって、本質的にはただのメソッドと何ら変わりがない。
具体例
たとえばクラスにアクセサを定義する時。
attr_accessor
を呼ぶ方法があるが、実はこれは言語要素ではなくてメソッドだ。
class A
attr_accessor :some_method
end
単にクラス定義のコンテキストのなかで attr_accessor
メソッドが実行されているだけ。
なので attr_accessor
は書き換えることも出来る。
class A
def self.attr_accessor(name)
puts name
end
attr_accessor :some_method
end
# アクセサは定義されない
A.some_method # undefined method `some_method' for A:Class (NoMethodError)
実行結果
attr_accessor
でアクセサが定義されていないことが分かる。
some_method
undefined method `some_method' for A:Class (NoMethodError)
参考
- メタプログラミングRuby第二版
環境
- ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2018-06-03
Discussion