计算属性我认为get是方便调用并且保证内部变量的私密性,set是为了确保程序的健壮性。我们以一个小计算器为例。
void main() {
var _calculator = Calculator(1, 1);
try {
_calculator.operation = '++';
} catch (e) {
print(e.toString());
}
_calculator.operation = '+';
print(_calculator.result);
}
class Calculator {
num num1, num2;
String _operation;
Calculator(
this.num1,
this.num2,
);
num get result {
num _result;
switch (this._operation) {
case "+":
_result = num1 + num2;
break;
case "-":
_result = num1 - num2;
break;
case "*":
_result = num1 * num2;
break;
case "/":
_result = num1 / num2;
break;
}
return _result;
}
set operation(String value) {
if (value.length == 1) {
if (!'+-*/'.contains(value)) {
throw Exception('operation Error');
} else {
this._operation = value;
}
} else {
throw Exception('operation lengthError');
}
//
}
}
运行结果