Передача переменной отслеживания как void внутри аргумента метода - PullRequest
0 голосов
/ 04 мая 2020

Итак, работая над Swift в качестве новичка, я увидел это соглашение

{ something in

для определенных аргументов метода. Насколько я понимаю, это потому, что некоторые аргументы дают вам переменную / константу, которую можно использовать в следующем блоке кода для отслеживания изменений в состоянии объекта. Я видел это, когда добавлял завершение к UIViewPropertyAnimator -объекту, где вы можете отслеживать ход выполнения завершения следующим образом:

animation.addCompletion({ progress in
    if progress == .end {
        // do something
    }
})

Теперь мой вопрос заключается в том, что подразумевается под этим (изображение ниже) ? Я четко понимаю, что делается внутри блока, но я не совсем понимаю, для чего используется этот крипти c "action -> Void in". Это потому, что действие отслеживается, но фактически не отслеживается внутри блока, поэтому вы объявляете его как "action -> Void"?

enter image description here

1 Ответ

0 голосов
/ 04 мая 2020

action -> void в этом случае говорит вам, что ожидаемый параметр - это замыкание, в основном функция, заданная в качестве параметра. Подробнее об этом в официальной документации: Выражения закрытия .

Ваш код для UIAlertAction будет выглядеть так:

UIAlertAction(title: "Title", style: .default) { action in
   // The Code that should run once the action is triggered.
}

Переданное действие параметра в эту функцию замыкания входит сам UIAlertAction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...