未为类“人”定义方法“ set_age”。飞镖

时间:2020-02-21 08:16:59

标签: dart

我是T的新手,尝试为变量(私有变量)设置值时遇到此错误,并且我正在使用dartgetters < / p>

但我收到此错误:

未为类“人”定义方法“ set_age”。

这是我的代码的样子。

setters

3 个答案:

答案 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)

p1.set_age = 10;

  set set_age(int age){
    _pAge =  age;
  }

p1.set_age(10);

  void set_age(int age){
    _pAge =  age;
  }