2010-02-05 12 views
50

Gotrubí - no puede modificar una cadena congelada (TypeError)

... '[] =': no ​​se puede modificar una cadena congelada (TypeError)

al intentar modificar lo Pensé que era una copia de ARGV [0].

mismos resultados para cada uno de

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' 

Respuesta

90

desde que Google tomó demasiado tiempo para encontrar la respuesta correcta ...

necesaria para hacer

arg_dup = ARGV[ 0 ].dup 
+13

derecha. Clon copia el estado completo del objeto, incluido el estado congelado. Dup duplica la carne del objeto sin esas otras banderas. – Eli

+1

bastante sorprendido de que .to_s haga lo mismo (incluido el congelado) !? – Straff

+2

64 segundos desde la publicación de su pregunta, hasta la búsqueda en Google y la irritación de publicar su respuesta fue demasiado larga. :) – vgoff

Cuestiones relacionadas