Sono nuovo di Ruby e di questo sito.Differenza tra operatori di stringa + e << in Ruby
Le seguenti due funzioni sono diverse, una modifica la variabile all'esterno della funzione e l'altra no.
def m1 (x)
x << "4"
end
def m2 (x)
x = x + "4"
end
str="123"
m2(str) #str remains unchanged 123
m1(str) #str is changed to 1234
vorrei assicurarsi che ho capito bene -
Quando M1 si chiama, il riferimento al str viene copiato e passato alla funzione, che vede come x. Operatore < < modifiche x che fa riferimento allo str str originale viene modificato da questa operazione.
Quando viene chiamato m2, il riferimento a str viene copiato e passato alla funzione che lo vede come x. Operatore + crea una nuova stringa e l'assegnazione x = x + "4" semplicemente reindirizza x alla nuova stringa lasciando intatta la variabile str originale.
Giusto?
Grazie
'm2 (str)' deve restituire '" 1234 "', quindi 'm1 (str)' deve restituire '" 1234 "' e dopo che 'str' sarà uguale a' "1234" '. Sei sicuro dei tuoi risultati? – mraaroncruz
sto usando 'Ruby 1.9.3p392' e funziona nel mio caso. metti 'puts' prima di quei metodi e controlla. – Davit
@tmpmember cosa intendi con "funziona" nel tuo caso? – mraaroncruz