1

在 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 编辑器中的错误还是我在这里做错了什么?

4

3 回答 3

2

正如您所说,getter 是用于检索对象属性值的函数,而setter 是用于设置对象属性值的函数。在您的示例代码中,_x不是对象属性。

规范显示getterSignature和setterSignature只允许在类和顶级库中使用

唯一让我感到惊讶的是你set没有产生语法错误。

于 2013-09-06T22:11:04.777 回答
0

Dart 项目成员回复了我的错误报告:“在另一个方法或函数中声明 getter 或 setter 是无效的。这可以通过遵循 localFunctionDeclaration 到 functionSignature 的语句的语法来查看。

也就是说,setter 没有语法错误是一个错误。”

于 2013-09-06T22:08:51.670 回答
0

这是一个有趣的。我认为这个错误可能是它没有抱怨二传手。如果您删除 getter 并仅使用 setter,它实际上不会运行。甚至解析。我认为这意味着它们不允许在函数中使用,尽管我并不清楚为什么。

于 2013-09-06T19:15:50.873 回答