我打算在 Dart 中正常定义和使用二传手,但我收到一个错误:方法'setAnimal'未为类型"动物笼"定义


void main(){
Animal a1 = Animal();
Cat c1 = Cat();
AnimalCage ac1 = AnimalCage();
ac1.setAnimal(a1); //error: The method 'setAnimal' isn't defined for the type 'AnimalCage'.

}
class AnimalCage{
Animal? _animal;
set setAnimal(Animal animal){
print('animals setter');
_animal = animal;
}
}
class Animal {
}

我得到了上面的错误,但我不知道是什么错了。

使用setter有什么问题吗?

如果我将setAnimal定义为一个方法,错误将消失,但我认为setter没有问题。

由于setAnimal是一个setter,所以您不能像使用方法那样使用它。

只是做:

ac1.setAnimal = a1;

为了避免混淆,你不应该用set作为setter名称的前缀,只要使用你想设置的名称,就像这样:

set animal(Animal animal){
print('animals setter');
_animal = animal;
}

然后像这样使用setter:

ac1.animal = a1;

如果您真的想使用方法语法,那么创建一个方法,如下所示:

void setAnimal(Animal animal){
print('animals setter');
_animal = animal;
}

你可以这样写:

ac1.setAnimal(a1); 

最新更新