这是一些简单的Dart代码:
class P {
var name = myname();
String myname() => "PPP";
}
main() {
new P();
}
运行时报告此错误:
Error: line 2 pos 14: illegal implicit access to receiver 'this' var name = myname(); ^
导致此错误的原因是什么?
答案 0 :(得分:3)
您正在尝试在静态上下文中评估非静态方法(请参阅注释)。您可以将方法标记为static
:
class P {
var name = myname();
static String myname() => "PPP";
}
或者在非静态上下文中评估代码:
class P {
var name;
P() {name = myname();}
static String myname() => "PPP";
}
注意:这里的“静态背景”的概念是我的心理模型,它可能与Dart的工作原理完全匹配,也可能不完全匹配。可能更为正确的是,this
在字段初始值设定项中无法显式或隐式显示。