Lassen Sie uns sagen, dass ich eine Ruby-Klasse haben:Ist es möglich, dass class.property = x etwas anderes als x zurückgibt?
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
Wenn ich versuche, und MyClass.property=x
tun, ist der Rückgabewert der gesamten Aussage immer x. Es ist eine Konvention in vielen C-basierten/inspirierten Sprachen, einen booleschen "Erfolg" -Wert zurückzugeben - ist es möglich, dies für einen Setter unter Verwendung der "Gleich-Syntax" in Ruby zu tun?
Außerdem - wenn das nicht möglich ist, warum nicht? Gibt es einen denkbaren Nachteil, wenn man einer "Equals Setter" Operation einen Wert zurückgeben kann?
Ich las dies als „zuerst, wenn Sie einen Accessor so definiert ist, würden Sie die verkettete Zuweisung Semantik brechen ". Wie die Antwort von rampion verdeutlicht, ist dies nicht der Fall: Der Rückgabewert einer Assignment-Methode wird normalerweise ignoriert. Was Martin sagt, ist "die Sprache erlaubt dir das nicht; wenn es so wäre, würdest du die verkettete Zuweisungssemantik durchbrechen". –