Быстрая охрана с собой

Я исполняю слабый сильный танец по-быстрому:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0), { [weak self] in
    guard let `self` = self else {
        return
    }
    self.doSomething(1)
})

До этого я использовал strongSelf вместо "я". На сайте я видел, что могу использовать этот символ `.

Но что этот персонаж делает в Swift? Без этого я не могу назначить себя. Почему это работает? Это хорошая практика, чтобы использовать его?

2 ответа

Решение

Язык программирования Swift

Представляет записку, в которой говорится следующее:

Если вам нужно присвоить константе или переменной то же имя, что и зарезервированному ключевому слову Swift, заключите его в кавычки (`) при использовании его в качестве имени. Однако избегайте использования ключевых слов в качестве имен, если у вас нет абсолютно никакого выбора.

РЕДАКТИРОВАТЬ:

Я делаю это, используя любое другое имя, например strongSelf как и раньше. Потому что, в конце концов, и "я", и strongSelf будет некоторая переменная, чтобы действовать на. Поэтому я предлагаю, если мы можем использовать другое имя переменной, которое хорошо.

Немного обновления (я не буду ссылаться здесь, когда использовать его, а скорее как).

С Swift 4.2 использование должно быть таким:

guard let self = self else { return }

С помощью ` в основном основан на ошибке компилятора, поэтому не рекомендуется.

Для получения дополнительной информации нет лучшего источника, чем этот. Объясняя все причины и другие соображения.

Короче говоря, вышесказанное более согласуется с другими случаями в коде:

if let myVariable = myVariable

Так что не создает путаницы / расхождений.

Другие вопросы по тегам