Closed2
メタプログラミングRuby 1章 頭文字M
メタプログラミング
「メタプログラミングとは、コードを記述するコードを記述することである。」
「メタプログラミングとは、言語要素を実行時に操作するコードを記述することである。」
ソースコードは、 変数・クラス・メソッドなどの 言語要素 から構成される。
多くのプログラミング言語では、言語要素は実行時に「姿が消えてしまう」。
たとえば、C++だと、コンパイラが仕事を追えると変数やメソッドは実体を失う。
(例えばインスタンスメソッドについてクラスに問い合わせることはできない。)
一方Rubyのような言語では、イントロスペクションすることが可能。
イントロスペクション
対象物について、その素性、カバーする範囲、そして可能な事を判断するために、調査できる機能
実際にイントロスペクションを見てみる
introspection.rb
class Greeting
def initialize(text)
@text = text
end
def welcome
@text
end
end
my_object = Greeting.new("Hello!")
my_object.class #=> Greeting
my_object.class.instance_methods(false) #=> [:welcome]
my_object.instance_variables #=> [:@text]
Rubyでは、実行時に言語要素を読み取ることが可能。
では書き込みは?
このスクラップは2021/08/05にクローズされました