計算屬性我認爲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');
}
//
}
}
運行結果