我是T
的新手,尝试为变量(私有变量)设置值时遇到此错误,并且我正在使用dart
和getters
< / p>
但我收到此错误:
未为类“人”定义方法“ set_age”。
这是我的代码的样子。
setters
答案 0 :(得分:2)
您不是在编写惯用的Dart,这可能就是为什么您将setter视为函数的原因。通过分配给设置器来调用设置器,因此,代替p1.set_age(10)
的应该是p1.age = 10;
。
您的代码(惯用的Dart)如下所示:
class Person{
String firstName, lastName;
int age;
double salary;
Person(this.firstName, this.lastName, this.salary) : age = 0;
Person.origin()
: firstName = "", lastName = "", age = 0, salary = 0;
String get fullName => "$firstName $lastName";
}
main() {
Person p1 = new Person("Jananath", "Banuka", 15000.00);
Person p2 = new Person("Thilina", "Kalansooriya", 55000.00);
p1.age = 10;
print(p1.fullName);
print(p2.fullName);
}
这使age
成为公共字段。无需将私有字段隐藏在公共设置者/获取者之后,然后将其转发给该领域。您可以直接将该字段公开。
Dart具有setter和getter的原因恰恰是因为将来不会阻止您将逻辑添加到设置/获取操作中。您随时可以更改
int age;
到
int _age;
int get age => _age;
set age(int value) {
log("SETTING AGE: $value");
_age = value;
}
如果需要的话。
答案 1 :(得分:0)
您正在将设置程序称为方法。您应该更改设置器的使用方式或将设置器更改为方法:
class Person1 {
int _pAge;
set set_age(int age) =>_pAge = age;
int get get_age => _pAge;
}
class Person2 {
int _pAge;
void set_age(int age) => _pAge = age;
int get_age() => _pAge;
}
void main() {
final p1 = Person1();
p1.set_age = 10;
print(p1.get_age);
final p2 = Person2();
p2.set_age(10);
print(p2.get_age());
}
答案 2 :(得分:0)
set set_age(int age){
_pAge = age;
}
void set_age(int age){
_pAge = age;
}