Hãy nói rằng tôi có một lớp Ruby:Có thể có class.property = x trả về một cái gì đó khác với x?
class MyClass
def self.property
return "someVal"
end
def self.property=(newVal)
# do something to set "property"
success = true
return success # success is a boolean
end
end
Nếu tôi cố gắng và làm MyClass.property=x
, giá trị sinh lợi của cả tuyên bố luôn là x. Nó là một quy ước trong rất nhiều ngôn ngữ dựa trên C/lấy cảm hứng để trả về một giá trị "thành công" boolean - có thể làm điều này cho một setter bằng cách sử dụng "bằng cú pháp" trong Ruby không?
Hơn nữa - nếu điều này là không thể, tại sao không? Có bất kỳ nhược điểm nào có thể hiểu được để cho phép hoạt động "bằng setter" trả về một giá trị không?
đầu tiên tôi đọc là "nếu bạn đã định nghĩa một accessor như thế, bạn sẽ phá vỡ các ngữ nghĩa phân xích ". Vì câu trả lời của rampion cho thấy rõ ràng, không phải như vậy: giá trị trả về của một phương pháp thẩm định thường bị bỏ qua. Những gì Martin đang nói là "ngôn ngữ không cho phép bạn làm điều đó, nếu nó đã làm, bạn sẽ phá vỡ các ngữ nghĩa phân định chuỗi". –