「goodnight」と表示される理由を説明できる人はいますか?削除した場合Rubyでオブジェクトを呼び出すと文字を変更する
string = "hello"
"goodnight world"と表示されます。
def a_method(string)
string = "hello"
string << " world"
end
bedtime = "goodnight"
a_method(bedtime)
puts bedtime
私は< <変異していることを理解しますが、=のハローを追加する理由は、このような大きな違いはありませんか?
rubyは値渡しであるためです。したがって、メソッド 'a_method'は元の参照を文字列' goodnight 'に変更していません。 – user1875195
あなたの場合は、変更されたバージョンを返すのではなく、オブジェクトを変更する '<<'を使います。あなたのメソッドが代わりに 'string +" world "'を持っていたら、これは起こりません。 –
@ user1875195 'a_method'が文字列' goodnight "に元の参照を変更していない場合、' 'goodnight world" 'は表示されません。 ''世界 ''と ''就寝時間 'を連結することはそれを突然変異させている。 –