bindingオブジェクト
bindingはスコープをオブジェクトにまとめたもの。bindingを使って、ローカルスコープを所得すれば、そのスコープを持ち回すことができる。
sample.rb
class MyClass
def my_method
@x = 1
binding
end
end
b = MyClass.new.my_method
eval "@x" b # => 1
##フックメソッド
reactでイベントを継承して、クラスを定義したりするように、rubyでも、クラスが継承されたときや、moduleがミックスインされたときに、コードを実行することができる。
sample.rb
class String
def self.inherited(subclass)
puts "#{self}は#{subclass}に継承された。"
end
end
class MyString < String; end
=> "StringはMyStringに継承された。"
inheritedの他にもincludedやprepended,extendedなどがある。