Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Integerにinstance_evalによるメソッド追加は不可能

お急ぎの方へ

Integerをはじめ、数値オブジェクトはfreezeされて変更を受け付けません。
よって、instance_evalのような破壊的メソッドは適用不能となります

本文

Integerにinstance_evalによるメソッド追加は不可能らしい……という話の記録メモです。

文字列等、別のアレであれば難なく定義可能です。

age = "hoge"
"hoge"
age.instance_eval {def next; :none; end}
#:next

age.next
#:none

ところが、これが数値となると

age = Integer(20)                                                                                                                
// also
age = 20

age.instance_eval {def next; :none; end}                                                                                         
#2> TypeError: no class/module to add method

となり、メソッド追加不能といった感じのエラーがでます。

で、この一件の解決版がこちらshuzo-kino.hateblo.jp