Ruby Language
RubyでのMonkey Patching
サーチ…
猿がクラスにパッチを当てる
Monkey patchingは、クラス自体の外にあるクラスまたはオブジェクトの修正です。
カスタム機能を追加すると便利なことがあります。
例:文字列クラスをオーバーライドして解析をブール値に提供する
class String
def to_b
self =~ (/^(true|TRUE|True|1)$/i) ? true : false
end
end
ご覧のとおり、 to_b()
メソッドをStringクラスに追加するので、任意の文字列をブール値に解析できます。
>>'true'.to_b
=> true
>>'foo bar'.to_b
=> false
オブジェクトを猿にパッチする
クラスのパッチ適用と同様に、単一のオブジェクトにパッチを適用することもできます。違いは、その1つのインスタンスだけが新しいメソッドを使用できることです。
例:文字列オブジェクトをオーバーライドして解析をブール値に提供する
s = 'true'
t = 'false'
def s.to_b
self =~ /true/ ? true : false
end
>> s.to_b
=> true
>> t.to_b
=> undefined method `to_b' for "false":String (NoMethodError)
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow