gpt4 book ai didi

dart - 方法 'set_age' 没有为类 'Person' 定义。在 Dart

转载 作者:行者123 更新时间:2023-12-03 04:57:30 26 4
gpt4 key购买 nike

我是 dart 的新手当我尝试将值设置为变量(这是一个私有(private)变量)并且我正在使用 getters 时出现此错误和 setters
但我收到此错误:

The method 'set_age' isn't defined for the class 'Person'.



这是我的代码的样子。
class Person{
String firstName, lastName;
int _pAge;
double pSalary;

// syntactic sugar
Person(this.firstName, this.lastName, this.pSalary);

// Named constructor
Person.origin(){
firstName = "";
lastName = "";
_pAge = 0;
pSalary = 0.0;
}

String fullName() => this.firstName + " " + this.lastName;

// getters and setters for _pAge
set set_age(int age){
_pAge = age;
}

int get get_age => _pAge;
}

main() {
Person p1 = new Person("Jananath", "Banuka", 15000.00);
Person p2 = new Person("Thilina", "Kalansooriya", 55000.00);

p1.set_age(10); //this is where the error is coming from

print(p1.fullName());
print(p2.fullName());
}

最佳答案

您不是在编写惯用的 Dart,这可能就是您将 setter 视为函数的原因。 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一个公共(public)领域。无需在公共(public) setter/getter 后面隐藏私有(private)字段,然后将其转发到该字段。您可以直接公开该字段。

Dart 具有 setter 和 getter 正是因为这样就不会阻止您将来向 set/get 操作添加逻辑。你可以随时改变

int age;



int _age;
int get age => _age;
set age(int value) {
log("SETTING AGE: $value");
_age = value;
}

如果需要,请稍后再做。

关于dart - 方法 'set_age' 没有为类 'Person' 定义。在 Dart ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60334580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com