为什么函数内部的这个getter会产生语法错误?

时间:2013-09-06 17:09:07

标签: dart dart-editor

在Dart编辑器构建27025中,以下代码在声明getter get x的行上产生语法错误:

main() {
  var _x;
  set x(x) => _x = x; // This is okay
  get x => _x;        // Syntax error here
}

请注意,setter set x不会产生错误。这是Dart编辑器中的错误还是我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

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

spec表示 getterSignature setterSignature 仅允许在类和顶级库中使用。

令我感到惊讶的是,set不会产生语法错误。

答案 1 :(得分:0)

这是一个有趣的。我认为这个错误可能是它没有抱怨安装者。如果你删除了getter并且只是使用setter它实际上并没有运行。甚至解析。我认为这意味着它们不被允许在一个功能中,尽管我不能立即明白为什么。

答案 2 :(得分:0)

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

那就是说,这是一个错误,即setter没有语法错误。“