0

下面是一些简单的 Dart 代码:

class P {
  var name = myname();

  String myname() => "PPP";
}

main() {
  new P();
}

运行时报此错误:

错误:第 2 行 pos 14:非法隐式访问接收器“this”
  变量名 = 我的名字();
             ^

是什么导致了这个错误?

4

1 回答 1

3

您正在尝试在静态上下文中评估非静态方法(请参阅注释)。您可以将方法标记为static

class P {
  var name = myname();

  static String myname() => "PPP";
}

或者在非静态上下文中评估代码:

class P {
  var name;

  P() {name = myname();}

  static String myname() => "PPP";
}

注意:这里的“静态上下文”概念是我的心智模型,它可能与 Dart 的工作方式完全匹配,也可能不完全匹配。this注意在字段初始化器中显式或隐式地根本不可用可能更正确。

于 2013-06-29T09:03:53.440 回答