Написать функцию

swift
ios

#1

///1. Создать класс и нужно создать класс модель животных

///2. Создать еще один класс и наследоваться с ранее созданого калсса

///3. Создать список из Животных

///4. в дочернем классе реализовать функцию которая будет замыкаюшей чтобы она возвращала саму животного и что она говорит

///5. с помошью перечисление из списка вытащить определенного животно (обьект)


#2

class Animal {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}

class Dog: Animal {
var breed: String

init(name: String, age: Int, breed: String) {
    self.breed = breed
    super.init(name: name, age: age)
}

func speak() -> String {
    return "\(name) says woof!"
}

}
let animalList = [
Animal(name: “Lion”, age: 5),
Animal(name: “Tiger”, age: 3),
Dog(name: “Buddy”, age: 2, breed: “Labrador Retriever”),
Animal(name: “Elephant”, age: 10)
]

class Dog: Animal {
var breed: String

init(name: String, age: Int, breed: String) {
    self.breed = breed
    super.init(name: name, age: age)
}

func speak() -> String {
    return "\(name) says woof!"
}

func speakAndReturnSelf() -> (Dog, String) -> () {
    return { dog, sound in
        print("\(dog.name) says \(sound)")
    }
}

}

enum AnimalType {
case lion
case tiger
case dog
case elephant
}

func getAnimal(ofType type: AnimalType) -> Animal? {
switch type {
case .lion:
return animalList.first { $0.name == “Lion” }
case .tiger:
return animalList.first { $0.name == “Tiger” }
case .dog:
return animalList.first { $0 is Dog }
case .elephant:
return animalList.first { $0.name == “Elephant” }
}
}

let lion = getAnimal(ofType: .lion)
if let lion = lion {
print(lion.name) // Output: Lion
}

let dog = getAnimal(ofType: .dog) as? Dog
if let dog = dog {
let speakFunc = dog.speakAndReturnSelf()
speakFunc(dog, “woof”)
}