読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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