Đây là một trường hợp thú vị mà tôi không thể giải thích được. Có vẻ như những người định cư riêng tư 'kiểu' riêng tư, nhưng đôi khi có những ngoại lệ cho điều đó. phương pháp tư nhân thường xuyên dường như hành xử khác nhau để setters tin:Tại sao những người định cư riêng tư hành xử khác với các phương pháp riêng tư khác?
class TestClass
def do
self.foo = :bar # fine
self.baz # error
end
private
def foo=(other)
@foo = other
end
def baz
end
end
TestClass.new.do
Đoạn mã trên bộ @foo
tốt, dù đã được kêu gọi một rõ ràng self
. Sau đó, nó không gọi #baz
, bởi vì #baz
là một phương pháp riêng tư.
Có chuyện gì với điều này?
Thông thường tôi sẽ gọi 'baz' mà không sử dụng tiền tố' self' và điều đó sẽ hoạt động trong trường hợp này. Nhưng tôi nhận ra rằng không trả lời câu hỏi trực tiếp của bạn. – moveson