🖥

Ruby — ミミックメソッドとは (メタプログラミングRuby)

2023/08/26に公開

ミミックメソッドとは、他のなにかに擬態したメソッドのこと。

人間の眼に、あたかも言語要素のように見えたりするようなやつ。
ただこれは呼び方の問題であって、本質的にはただのメソッドと何ら変わりがない。

具体例

たとえばクラスにアクセサを定義する時。
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オープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-06-03

Discussion