Swift 5.7: регулярное выражение. Сокращения для необязательной развертки. Разблокируйте экзистенциалы для всех протоколов.

Сокращения для необязательной развертки

if let workingDirectoryMailmapURL {
    print (workingDirectoryMailmapURL)
}

while let workingDirectoryMailmapURL {
    print (workingDirectoryMailmapURL)
    break
}

guard let workingDirectoryMailmapURL else {
    return
}

print (workingDirectoryMailmapURL)

Улучшенный вывод типов для сложных замыканий.

Swift недавно расширил возможности вывода типов для замыканий. Теперь он может автоматически определять возвращаемый тип сложных замыканий, как показано в следующем примере:

let scores = [100, 70, 75]

let results = scores.map { score in
    if score >= 75 {
        return "\(score)%: Pass"
    } else {
        return "\(score)%: Fail"
    }
}

В этом закрытии, которое использует функцию карты для преобразования массива оценок в массив соответствующих операторов «пройдено/не пройдено», Swift теперь может точно вывести возвращаемый тип как String, не требуя явных аннотаций типа.

Улучшенный синтаксический анализ строк с помощью Swift Regex

Регулярные выражения (Regex) — это мощные инструменты для сопоставления с образцом и манипулирования строками. Регулярные выражения, хотя и очень компактные, иногда могут быть трудны для понимания и отладки.

Вот пример того, как использовать Swift Regex для извлечения хэштегов из твита:

import RegexBuilder

if let regex = try? Regex("#[a-zA-Z0-9_]+") {
    let matches = tweet.matches(of: regex)
    for match in matches {
        let hashTag = tweet[match.range.lowerBound ..< match.range.upperBound]
        print (hashTag)
    }
}

В этом примере мы импортируем библиотеку RegexBuilder, которая предоставляет удобный способ построения регулярных выражений в Swift. Затем мы определяем шаблон регулярного выражения, который соответствует хэштегам (#[a-zA-Z0–9_]+), оборачиваем его в try? оператор для обработки любых ошибок синтаксического анализа, которые могут возникнуть, и применить его к строке твита с помощью метода match(of:).

Создание регулярного выражения с литералом регулярного выражения

Один из самых простых способов создания регулярных выражений — использование литералов регулярных выражений. В приведенном ниже коде показано, как использовать литералы Regex, которые предлагают проверки во время компиляции. Вы можете узнать больше о литералах Regex здесь.

import RegexBuilder

let regex = /#[A-Za-z_0-9]+/
let matches = tweet.matches(of: regex)

for match in matches {
    let hashTag = tweet[match.range.lowerBound ..<   match.range.upperBound]
    print (hashTag)
}

Создание регулярного выражения с помощью RegexBuilder

RegexBuilder — это предметно-ориентированный язык, который предоставляет выразительный способ построения регулярных выражений на основе построителя результатов. Он похож на SwiftUI.

Чтобы использовать его, вам сначала нужно импортировать модуль RegexBuilder. Затем вы можете создать регулярное выражение, используя замыкание Regex.

В качестве примера рассмотрим создание регулярного выражения, которое соответствует хэштегам в твите. Регулярное выражение должно начинаться с символа «#», за которым следует один или несколько символов из набора [a-z0–9_]. Вот как вы можете создать это регулярное выражение с помощью RegexBuilder:

import RegexBuilder

let regex = Regex {
    "#"
    OneOrMore {
        CharacterClass(
            ("a" ... "z"),
            ("0" ... "9"),
            ("_" ... "_")
        )
    }
}

let matches = tweet.matches(of: regex)

for match in matches {
    let hashTag = tweet[match.range.lowerBound ..< match.range.upperBound]
    print (hashTag)
}

Разблокировать экзистенциалы для всех протоколов

Выпуск Swift 5.7 включает в себя заметные изменения в возможностях обработки протоколов языка. В частности, произошло значительное ослабление ограничений, ранее наложенных на использование протоколов в качестве типов с соответствующими требованиями к типам.

Проще говоря, это означает, что коды, подобные следующим, теперь будут считаться законными:

let tvShow: [any Equatable] = ["London", 99]

Swift Regex Literals
Реализовано: Swift 5.7
https://github.com/sergeyleschev/swift-evolution/blob/main/proposals/0354-regex-literals.md

Контакты
Я уделяю особое внимание времени выхода на рынок и не отдаю приоритет техническому долгу. И я принимал участие в деятельности Pre-Sale/RFX в качестве системного архитектора, оценивая работу для мобильных устройств (iOS-Swift, Android-Kotlin), Frontend (React-TypeScript) и Backend (NodeJS-.NET-PHP-Kafka-SQL). -NoSQL). И я также организовал работу Pre-Sale в качестве технического директора от возможности к предложению через передачу знаний к успешной доставке.

🛩️ #startups #management #cto #swift #typescript #database
📧 Email: [email protected]
👋 LinkedIn: https://www.linkedin.com/in/sergeyleschev /
👋 LeetCode: https://leetcode.com/sergeyleschev/
👋 Twitter: https://twitter.com/sergeyleschev
👋 Github: https:/ /github.com/sergeyleschev
🌎 Сайт: https://sergeyleschev.github.io
🌎 Reddit: https://reddit.com/user/sergeyleschev
🌎 Quora: https://quora.com/sergey-leschev

🖨️ Шаблоны дизайна PDF: Скачать