在 Dart Editor build 27025 中,以下代码在声明 getter 的行上产生语法错误get x
:
main() {
var _x;
set x(x) => _x = x; // This is okay
get x => _x; // Syntax error here
}
请注意,setterset x
不会产生错误。这是 Dart 编辑器中的错误还是我在这里做错了什么?
在 Dart Editor build 27025 中,以下代码在声明 getter 的行上产生语法错误get x
:
main() {
var _x;
set x(x) => _x = x; // This is okay
get x => _x; // Syntax error here
}
请注意,setterset x
不会产生错误。这是 Dart 编辑器中的错误还是我在这里做错了什么?
正如您所说,getter 是用于检索对象属性值的函数,而setter 是用于设置对象属性值的函数。在您的示例代码中,_x
不是对象属性。
规范显示getterSignature和setterSignature只允许在类和顶级库中使用。
唯一让我感到惊讶的是你set
没有产生语法错误。
Dart 项目成员回复了我的错误报告:“在另一个方法或函数中声明 getter 或 setter 是无效的。这可以通过遵循 localFunctionDeclaration 到 functionSignature 的语句的语法来查看。
也就是说,setter 没有语法错误是一个错误。”
这是一个有趣的。我认为这个错误可能是它没有抱怨二传手。如果您删除 getter 并仅使用 setter,它实际上不会运行。甚至解析。我认为这意味着它们不允许在函数中使用,尽管我并不清楚为什么。