ios - 调用具有相同变量和值的子类

标签 ios swift

所以我有 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/

相关文章:

ios - cordova[phonegap] 设置启动画面在 ios 中无法正常工作

ios - Swift 中的二进制文件 IO

swift - 不从 Remote Firebase Automl 自定义模型检索输出预测

ios - 使用 UIScrollView 和 AutoLayout 以编程方式创建 Controller 未正确调整 View 大小

iphone - IOS isEqualToString 不工作

ios - 加入混合的从右到左和从左到右的语言字符串时的奇怪行为

ios - 警报 View 位置不在中心

iOS:如何让一个 View 触发另一个 View 的更新?

ios - Swift - 发送到已释放对象的消息 - 快速优化级别最快

ios - applicationWillEnterForeground 为 textLabel 找到 nil