Tôi đang làm việc thông qua một hướng dẫn ngay bây giờ, và tôi muốn hiểu tại sao sau đây xảy ra:Tại sao `<<` nối thêm vào chuỗi Ruby trong khi `+ =` thì không?
original_string = "Hello, "
hi = original_string
there = "World"
hi += there
assert_equal "Hello, ", original_string
original_string = "Hello, "
hi = original_string
there = "World"
hi << there
assert_equal "Hello, World", original_string
Tại sao +=
không có hiệu lực trên original_string
, và <<
không? Tôi hoàn toàn chắc chắn rằng trường hợp thứ hai cũng sẽ bằng "Hello, "
, nhưng đó không phải là trường hợp.
hi = original string
trong ví dụ đầu tiên xuất hiện để sao chép các giá trị của original_string
vào hi
, nhưng hi = original string
trong ví dụ thứ hai xuất hiện để thiết lập hi
để trỏ đến chuỗi giống như original string
. Tôi đoán có một số loại quyết định tiềm ẩn đằng sau hậu trường là liệu có nên sao chép giá trị hay sao chép tham chiếu ... hay cái gì đó.