Ruby できない

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

Shou Arisaka
1 分で読める
2018年2月20日

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(//,'')

これでok。

この記事をシェア

Shou Arisaka 2018年2月20日

🔗 リンクをコピー