機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

Rubyでコマンドライン引数(ARGV)をgsub!できない!

AD

プログラミング

gsub!しようとするとこういうエラーがでます。

/mnt/c/pg/dev.rb:3:in `gsub!': can't modify frozen String (RuntimeError)
        from /mnt/c/pg/dev.rb:3:in `<main>'

こういうのがしたいわけです。

s = ARGV[0]
puts s.gsub!(/./,"hoge")

最初は焦りましたが、普通に解決できます。破壊的メソッドで直接定数を弄ることが不可能、ってだけです。

つまり、こう。

s = ARGV[0]
puts s.gsub(/./,"hoge")

もうちょっと掘り下げる。

“もうすでにgsub!使いまくっちゃって全部gsubにするのだるいよー。
あっ、普通に代入すればいんじゃね?”

残念ながらそれでは出来ない模様。

argv = ARGV[0]
# s = argv

じゃあどうするか。

一回置換処理をする。

argv = ARGV[0]
s = argv.gsub(//,'')

これでおk。

SPONSOR

オンラインブートキャンプ全12コースの「ウケ放題」 AD

コメントを残す

Close Menu