Разница между необработанными строками и обычными строками в swift 5 - PullRequest
0 голосов
/ 29 марта 2019

Например:

Необработанная нить

let str1 = #"The "swift 5" has abiliy to create raw strings."#

Обычная строка

let str2 = "The \"swift 5\" has abiliy to create raw strings."

Это разница только в синтаксисе?

Необработанная строка введена только для добавления количества обратных косых черт в случае двойных кавычек

Ответы [ 2 ]

4 голосов
/ 29 марта 2019

Необработанные строки были введены SE-0200 . Из статьи Пола Хадсона "Как использовать необработанные строки в Swift 5" (выделено мной):

Swift 5 дает нам возможность указать пользовательский разделитель строк используя хеш-символ #, иногда называемый хэштегом или знаком фунта . Когда вы используете # со строкой, это влияет на понимание Swift специальные символы в строке: \ больше не действует как escape символ , поэтому \n буквально означает обратную косую черту, а затем «n», а не разрыв строки, и \(variable) будут включены в качестве этих символов вместо использования интерполяции строк.

Итак, эти две строки идентичны:

let normalString = "\\Hello \\World"
let rawString = #"\Hello \World"#

Для получения дополнительной информации: Выборочная строка Escape

1 голос
/ 29 марта 2019

Из Статья Космина Пупэзэ "Что нового в Swift 5?" :

Swift 4.2 использует escape-последовательности для представления обратной косой черты и кавычек отметки в строках:

let escape = "You use escape sequences for \"quotes\"\\\"backslashes\" in Swift 4.2."
let multiline = """
                You use escape sequences for \"\"\"quotes\"\"\"\\\"\"\"backslashes\"\"\"
                on multiple lines
                in Swift 4.2.
                """

Swift 5 добавляет необработанные строки. Вы добавляете # в начале и конце строка, так что вы можете использовать обратную косую черту и кавычки без проблем. [* 1 010 * SE-0200 ]:

let raw = #"You can create "raw"\"plain" strings in Swift 5."#
let multiline = #"""
                You can create """raw"""\"""plain""" strings
                on multiple lines
                in Swift 5.
                """#

Подробнее

...