Edited at

Ruby のオープンクラスとは (メタプログラミングRuby)

More than 1 year has passed since last update.

Rubyでは定義済みのクラスでも、何度でも開いて、中身をいじることが出来る。

これをオープンクラスという。



クラスを定義

クラスメソッドを1個作る。

class A

def some_method
p :some_method
end
end


また定義

メソッドをもう1個作る。

class A

def new_method
p :new_method
end
end

すると‥


どちらのメソッドも呼べるようになる

A.new.some_method # :some_method

A.new.new_method # :new_method


なんでもアリ

Integer クラスなど、元から存在するクラスでもオープンして書き換えられる。

class Integer

def some_method
p :some_method
end
end

1.some_method # :some_method
2.some_method # :some_method


参考


  • メタプログラミングRuby