In iOS 13 Основы программирования с помощью Swift от Matt Neuburg Я наткнулся на этот странный фрагмент кода
class MyClass {
var s = ""
func store(_ s:String) {
self.s = s
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
let m = MyClass()
let f = MyClass.store(m) // what just happened!?
f("howdy")
print(m.s) // howdy
}
}
Очевидно, что f имеет тип () -> ()
(вот что это говорит по крайней мере об отладчике) и все же на следующей строке мы передаем ему строку.
Исходя из результата, кажется, что f каким-то образом стал ссылкой на метод store, поэтому при печати m.s
получается "привет". Но этот код действительно сбивает меня с толку, и объяснение того, что происходит, очень ценится.
Я даже не понимаю, как MyClass.store
является законным, потому что store
является методом экземпляра, и в этом случае это упоминается, как если бы это был метод * * * * * * * * * * *