Chạy vào một số hành vi kỳ lạ và tự hỏi liệu có ai khác có thể xác nhận những gì tôi đang nhìn thấy hay không.Ruby attr_reader cho phép một biến đổi chuỗi biến đổi nếu sử dụng <<
Giả sử bạn tạo một lớp có biến thành viên và cho phép nó được đọc bằng attr_reader.
class TestClass
attr_reader :val
def initialize(value)
@val = value
end
end
Bây giờ khi tôi làm như sau, có vẻ như sửa đổi giá trị của @val, mặc dù tôi chỉ cấp quyền đọc.
test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val
này trả
hello
hello world
Đây mới chỉ là kết quả từ một số thử nghiệm tôi đã làm trong IRB vì vậy không chắc chắn nếu điều này luôn luôn là trường hợp
'attr_reader' có nghĩa là bạn không thể đặt giá trị, nghĩa là không có phương thức' value = 'nào được xác định. Nó chắc chắn không có nghĩa là bạn không thể cal một phương thức trên đối tượng –