Всем доброго вечера!
При инициализации экземпляра класса необходимо указывать метод в качестве параметра. Этот метод может быть трейлинг клоужером, а может быть методом этого же класса, причем кол-во и тип параметров у этого метода может быть любым. Как прописать, чтобы xcode не ругался на ошибку
Instance member ‘addNumber’ cannot be used on type ‘Person’; did you mean to use a value of this type instead?
? Ну например, есть класс Person, ему надо присвоить toDo. Сами методы реализуются через extension, а вызываются через метод класса perform().
class Person {
var name: String
var toDo: (Any...) -> ()
// var toDo: (Person) -> (Any...) -> ()
init(name: String, toDo: @escaping (Any...) -> ()) {
self.name = name
self.toDo = toDo
}
func perform() {
toDo()
}
}
extension Person {
func addNumber(_ number: Int) {
print("addNumber: \(number)")
}
func addEmail(_ email: String) {
print("addEmail: \(email)")
}
func addAddress(_ city: String, _ street: String) {
print("addAddress: \(city), \(street)")
}
}
let person = Person(name: "Vasya", toDo: Person.addNumber(123))
person.perform()