在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编辑器中的错误还是我在这里做错了什么?
答案 0 :(得分:2)
正如您所说, getter是用于检索对象属性值的函数和 setter是用于设置对象属性值的函数。在示例代码中,_x
不是对象属性。
spec表示 getterSignature 和 setterSignature 仅允许在类和顶级库中使用。
令我感到惊讶的是,set
不会产生语法错误。
答案 1 :(得分:0)
这是一个有趣的。我认为这个错误可能是它没有抱怨安装者。如果你删除了getter并且只是使用setter它实际上并没有运行。甚至解析。我认为这意味着它们不被允许在一个功能中,尽管我不能立即明白为什么。
答案 2 :(得分:0)
Dart项目成员回复了我的错误报告“在其他方法或函数中声明getter或setter是无效的。这可以通过遵循localFunctionDeclaration到functionSignature的语句来看到。
那就是说,这是一个错误,即setter没有语法错误。“