Быстрое закрытие, дающее функцию переменной - PullRequest
0 голосов
/ 14 декабря 2018
class ClassA {

    var callback : (()->())?

    func someAction() {
        callback?()
    }
}

class ClassB {

    func caller() {
        let a = ClassA()
        a.callback = {
            print("hello")
            //d do stuff
        }
    }
}

Я хочу переместить реализацию обратного вызова ClassB в отдельную функцию.как показано ниже

a.callback = somefunc()

Но это невозможно , поскольку мы передаем функцию переменной

И я нехочу

a.callback = { somefunc() }

Есть ли способ вызвать функцию, если она вообще есть?

1 Ответ

0 голосов
/ 14 декабря 2018

Добавление () к someFunc означает, что вы вызываете функцию, и это приведет к возвращаемому значению someFunc, которое равно Void.

Вам необходимо обратиться к функциипрямо, не называя этого.Просто удалите ():

a.callback = someFunc
...