Bye Bye Moore

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

数値オブジェクトも凍結されているので破壊的メソッドは適用できない

以前、こんな記事を書きました。shuzo-kino.hateblo.jp

すると、 けんぼー (id:kemboorg)さんから、

instance_evalはオブジェクトの破壊的変更に当たるからではないでしょうか。
試してみたところinstance_evalが出来ないオブジェクトはfrozen?したところtrueが帰ってきて、
逆に出来るはずのオブジェクトもfreezeすることでinstance_eval出来なくなりました。

というコメントが。

頂いた情報をもとに、手元のpryで確認すると……

20.frozen?
#>>true

凍結されてますね(白目

というわけで、件の話は

  • 数値オブジェクトは凍結されている
  • 凍結されたオブジェクトは破壊的変更の類を受け付けない
  • instance_evalは破壊的メソッド

と、フツーに筋の通った簡単なお話しでした。