Closed2

メタプログラミングRuby 1章 頭文字M

akkyakky

メタプログラミング

メタプログラミングとは、コードを記述するコードを記述することである。

メタプログラミングとは、言語要素を実行時に操作するコードを記述することである。

akkyakky

ソースコードは、 変数・クラス・メソッドなどの 言語要素 から構成される。
多くのプログラミング言語では、言語要素は実行時に「姿が消えてしまう」。
たとえば、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にクローズされました