Ruby Probleme

Probleme mit gsub! in Ruby-Befehlszeilenargumenten (ARGV)

Shou Arisaka
1 Min. Lesezeit
1. Okt. 2025

Wenn Sie versuchen, gsub! zu verwenden, erhalten Sie diesen Fehler:

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

Das ist, was ich tun möchte:

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

Zuerst geriet ich in Panik, aber es lässt sich leicht lösen. Es ist einfach so, dass destruktive Methoden Konstanten nicht direkt ändern können.

Mit anderen Worten, so:

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

Lassen Sie uns ein wenig tiefer graben.

“Ich bin so daran gewöhnt, gsub! zu verwenden, dass es mühsam ist, alles in gsub zu ändern… Oh, kann ich es nicht einfach normal zuweisen?”

Leider funktioniert das nicht.

argv = ARGV[0]
# s = argv

Also, was macht man?

Führen Sie einmal eine Ersetzungsoperation durch.

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

Das funktioniert.

Diesen Artikel teilen

Shou Arisaka 1. Okt. 2025

🔗 Links kopieren