Что означает `_?` В Swift? - PullRequest
       3

Что означает `_?` В Swift?

0 голосов
/ 31 октября 2018

Несколько дней назад я преобразовал свой старый проект Xcode 8 в Swift 4 в Xcode 9. Я заметил дополнительные коды Swift, сгенерированные вместе с пояснениями чуть выше кода.

Вот как это выглядит:

// FIXME: comparison operators with optionals were removed from the Swift Standard Libary.
// Consider refactoring the code to use the non-optional operators.
fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
  switch (lhs, rhs) {
  case let (l?, r?):
    return l < r
  case (nil, _?):
    return true
  default:
    return false
  }
}

Я попытался понять, что делает код, и нашел то, что я считаю необычным _? в коде.

Я полагаю, что это неиспользуемый необязательный параметр, поскольку _ означает, что мы не собираемся использовать конкретную переменную, поэтому нас не волнует имя переменной, а ? является необязательным синтаксисом.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 31 октября 2018

_ - это шаблон с подстановочными знаками , который соответствует чему угодно, см., Например,

И x? - это необязательный шаблон , ярлык для .some(x), он соответствует необязательный, который не является nil.

Здесь у нас есть комбинация обоих: _? соответствует всему, что не nil.

case (nil, _?) соответствует, если левый операнд равен nil и правильный операнд нет. Вы также можете написать это как case (.none, .some).

Xcode может вставить эту функцию во время миграции со старых версий Swift, сравнить Странная универсальная функция появляется в контроллере вида после преобразования в swift 3 .

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