Как вы передаете функцию в качестве параметра функции Swift?

-3

Глядя на передачу функции в качестве параметра (например, onCompletion), который будет вызываться как часть вызова функции в Swift (аналогично закрытию javascript). Какая здесь самая лучшая практика?

Код:

func didFinishFunc(onCompletion: func) {
    func()
}

func onCompletionFunc()
{
    print("completed.")
}

func caller()
{
   didFinishFunc(onCompletion: onCompletionFunc)
}

// caller is called
caller()
  • 1
    Прочитайте руководство по быстрому языку. developer.apple.com/library/content/documentation/Swift/...
  • 0
    спасибо за ваш сложный ответ
Показать ещё 5 комментариев
Теги:
function
closures
parameters

2 ответа

3
Лучший ответ

Вы можете определить свою функцию следующим образом.

func didFinishFunc(onCompletion: () -> Void) {
    // your function implementation here

    onCompletion()
}

Эта функция принимает в качестве параметра замыкание (иногда называемое обратным вызовом или анонимной функцией на других языках). Это закрытие не имеет параметров и никакого возвращаемого значения.

Если вы хотите, чтобы у закрытия были параметры, вы могли бы сделать что-то вроде этого:

func didFinishFunc(onCompletion: (String, Int) -> Void) {
    // your function implementation here

    onCompletion("foo", 5)
}

Эта функция принимает два параметра: String и Int.

Если вы хотите, чтобы у закрытия был тип возврата, измените тип (над ним Void) после ->.

  • 0
    отлично спасибо Тейлор
1

Используйте быстрое закрытие. Например

func didFinishFunc(onCompletion handler: () -> Void) {
    handler()
}

См. Язык быстрого программирования: Закрытие.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню