Hãy xem xét mã sau:Các chuỗi trong Ruby có thể thay đổi được không?
$ irb
> s = "asd"
> s.object_id # prints 2171223360
> s[0] = ?z # s is now "zsd"
> s.object_id # prints 2171223360 (same as before)
> s += "hello" # s is now "zsdhello"
> s.object_id # prints 2171224560 (now it's different)
Có vẻ như các ký tự riêng lẻ có thể được thay đổi bằng cách tạo chuỗi mới. Tuy nhiên phụ thêm vào chuỗi dường như tạo ra một chuỗi mới.
Các chuỗi trong Ruby có thể thay đổi không?
Có, và có thể trả lời thông qua tìm kiếm tầm thường. http://stackoverflow.com/questions/2608493/why-did-matz-choose-to-make-strings-mutable-by-default-in-ruby –
@DaveNewton: Nó tuyệt vời không dễ dàng như thế nào để tìm dups trên SO như bạn gần như có thể đếm trên một chủ đề SO sắp tới đầu tiên trên google? –
'+' là ghép nối và sẽ trả về một chuỗi mới. '<<' được thêm vào và sẽ gắn thêm vào đối tượng chuỗi đã cho (không tạo đối tượng chuỗi mới). – Chad