エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
Ruby の Array.pack('p') で 'can't modify frozen String' が出たら、バージョンを上げるか、解凍が必要 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
Ruby の Array.pack('p') で 'can't modify frozen String' が出たら、バージョンを上げるか、解凍が必要 - Qiita
[47] pry(main)> str = 'abc' => "abc" [48] pry(main)> str.freeze => "abc" [49] pry(main)> [str].pa... [47] pry(main)> str = 'abc' => "abc" [48] pry(main)> str.freeze => "abc" [49] pry(main)> [str].pack('p*') RuntimeError: can't modify frozen String from (pry):48:in `pack' pack は変更(modify)ではない、エラーが出るのが不思議だった。 そこで思いついたのは、「ポインタを渡すと、破壊できるから」という理由。 本当にそうなのかを調べようと思ったが、 2.6.3 まではエラーだが、 2.7.3 からはエラーにならなくなっていることに気づいた。 下記のコードを tmp.rb として保存し、手元にある version を切り替えながらテストした。