What are your thoughts about an updated syntax for writing getters/setters?
.NET style?
class MyClass {
public Number TheAnswerToLifeTheUniverseAndEverything {
get() { return 42; }
set(Number answer) {
if (answer == 42)
return answer;
else
throw(message="Wrong answer");
}
}
public Number MagicNumber {
set(Number num) {
// whatever is returned from set() is what is put into this.MagicNumber
return num*2;
}
}
}
ES6 style?
class MyClass {
get TheAnswerToLifeTheUniverseAndEverything() {
return 42;
}
set TheAnswerToLifeTheUniverseAndEverything(Number answer) {
if (answer == 42)
return answer;
else
throw(message="Wrong answer");
}
set MagicNumber(Number num) {
return num*2;
}
}
Usage:
myInst = new MyClass();
writeoutput(myInst.TheAnswerToLifeTheUniverseAndEverything); // 42
myInst.MagicNumber = 2;
writeoutput(myInst.MagicNumber); // 4
I could see merit in either direction. I’d probably lean more toward the .NET implementation personally - it groups the setter/getter better, and less verbose.
I suppose a case could be made for neither, in favor of an “onMissingMember” callback instead, but that’s a different thought.