所以我有 Animal 父类(super class)和三个子类:狮子狗和大象。
enum Gender {
case male
case female
}
class Animal {
var species: String
var gender: Gender
init (species: String, gender: Gender) {
self.species = species
self.gender = gender
}
}
// Lion Class
class Lion: Animal {
var age: Int = 10
init () {
super.init(species: "Lion", gender: Gender.male)
}
}
// Elephant Class
class Elephant: Animal {
var age: Int = 8
init () {
super.init(species: "Elephant", gender: Gender.female)
}
}
//Dog Class
class Dog: Animal {
var age: Int = 6
init () {
super.init(species: "Dog", gender: Gender.female)
}
}
它们都有从父类(super class) Animal 继承的性别变量。
现在我想要一个计算属性:[Animal]
类型的 maleAnimal
包含所有雄性动物,最好的方法是什么?
class Zoo {
var animals: [Animal] = [Lion(), Elephant(), Dog()]
var maleAnimals: [Animal] {
for animalClasses in animals {
if animalClasses.gender == Gender.male {
return self.maleAnimals.append(animalClasses)
}
}
}
}
我已经尝试过类似下面示例的方法,但它显然不起作用。
感谢任何提示!
最佳答案
您可以对数组使用filter
方法。
var maleAnimals : [Animal] {
return animals.filter { $0.gender == .male }
}
关于ios - 调用具有相同变量和值的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42155264/