Dart 错误:Can';t访问';这';在字段初始值设定项中读取';名字';
我正在建立一个小班,只是为了训练/学习Dart,我遇到了以下错误:Dart 错误:Can';t访问';这';在字段初始值设定项中读取';名字';,dart,Dart,我正在建立一个小班,只是为了训练/学习Dart,我遇到了以下错误: Error: Can't access 'this' in a field initializer to read 'firstName'. String completeName = "${firstName} ${lastName}"; ^^^^^^^^^ lib/main.dart:13:41: Error: Can't access 'this' in
Error: Can't access 'this' in a field initializer to read 'firstName'.
String completeName = "${firstName} ${lastName}";
^^^^^^^^^
lib/main.dart:13:41:
Error: Can't access 'this' in a field initializer to read 'lastName'.
String completeName = "${firstName} ${lastName}";
^^^^^^^^
Error: Compilation failed.
这是我的密码:
void main()
{
var user = new User();
user.firstName = "John";
user.lastName = "Smith";
user.printName();
}
class User
{
String firstName;
String lastName;
String completeName = "$firstName $lastName";
void printName()
{
print(completeName);
}
}
我的编程背景是C/C++和Python,我从来没有遇到过类似的问题。
有人能帮我理解为什么我会犯这个错误吗?提前谢谢!
使用吸气剂:
void main()
{
var user = new User();
user.firstName = 'john';
user.lastName = 'smith';
user.printName();
}
class User
{
String firstName;
String lastName;
User();
String get completeName => "$firstName $lastName";
void printName()
{
print(completeName);
}
}
或者你也可以这样做
void main()
{
var user = new User("John", "Smith");
user.printName();
}
class User
{
String firstName;
String lastName;
String completeName;
User(this.firstName, this.lastName) : completeName = "$firstName $lastName";
void printName()
{
print(completeName);
}
}
这回答了你的问题吗?而且,使用空安全性(Dart 2.12),您甚至可以执行
late final String completeName=“$firstName$lastName”
因为只有在第一次读取时才会计算该值,此时可以安全地引用此
和其他成员。(我认为当firstName
和lastName
是可变的时,getter方法是最好的方法)。谢谢@lrn的提示