Ruby – kan bevroren tekenreeks niet wijzigen (TypeError)

Gekregen

… ‘[]=’: kan bevroren tekenreeks (TypeError) niet wijzigen

bij het aanpassen van wat ik dacht dat een kopie van ARGV[0] was.

Dezelfde resultaten voor elk van

arg = ARGV[ 0 ]
arg_cloned = ARGV[ 0 ].clone
arg_to_s = ARGV[ 0 ].to_s
arg[ 'x' ] = 'y'
arg_cloned[ 'x' ] = 'y'
arg_to_s[ 'x' ] = 'y'

Antwoord 1, autoriteit 100%

aangezien google te lang duurde om het juiste antwoord te vinden…

moet doen

arg_dup = ARGV[ 0 ].dup

Antwoord 2, autoriteit 18%

Aangezien Ruby 2.3 de aanbevolen methode is om te gebruiken de unaire plus-operator, retourneert het een gedupliceerde veranderlijke tekenreeks als een tekenreeks is vastgelopen.

+arg

Other episodes