メタプログラミングRubyを読んでいます(5)

読んだ範囲

メタプログラミングRuby」の「4.4.1 カプセル化の破壊」から「4.5.4 呼び出し可能オブジェクトのまとめ」まで読みました。

知ったこと

コンテキスト探査機

コンテキスト探査機という用語を始めて知りました。instance_evalメソッドに渡したブロックのことを指します。 また、instance_evalメソッドは、オブジェクトのコンテキストで、ブロックを評価します。

使い慣れていないので、instance_evalメソッドを使ってみようと思います。

:arrow_down: Quarterオブジェクトのnum変数に0を代入する例です。

class Quarter
  attr_reader :num

  def initialize
    @num = 4
  end
end

quarter = Quarter.new

quarter.instance_eval do
  @num = 0
end

puts quarter.num # => 0