Swift Language Littérature et caractères


Exemple

Les littéraux de chaîne dans Swift sont délimités par des guillemets ( " ):

let greeting = "Hello!"  // greeting's type is String

Les caractères peuvent être initialisés à partir de littéraux de chaîne, à condition que le littéral ne contienne qu’un seul cluster de graphèmes:

let chr: Character = "H" // valid
let chr2: Character = "😊" // valid
let chr3: Character = "abc" // invalid - multiple grapheme clusters

Interpolation de chaîne

L'interpolation de chaînes permet d'injecter une expression directement dans un littéral de chaîne. Cela peut être fait avec tous les types de valeurs, y compris les chaînes, les entiers, les nombres à virgule flottante et plus encore.

La syntaxe est une barre oblique inverse suivie de parenthèses qui entourent la valeur: \(value) . Toute expression valide peut apparaître entre parenthèses, y compris les appels de fonction.

let number = 5
let interpolatedNumber = "\(number)"  // string is "5"
let fortyTwo = "\(6 * 7)"             // string is "42"

let example = "This post has \(number) view\(number == 1 ? "" : "s")"
// It will output "This post has 5 views" for the above example.
// If the variable number had the value 1, it would output "This post has 1 view" instead.

Pour les types personnalisés, le comportement par défaut de l'interpolation de chaîne est que "\(myobj)" est équivalent à String(myobj) , la même représentation utilisée par print(myobj) . Vous pouvez personnaliser ce comportement en implémentant le protocole CustomStringConvertible pour votre type.

3.0

Pour Swift 3, conformément à SE- String.init<T>(_:) , String.init<T>(_:) a été renommé String.init<T>(describing:) .

L'interpolation de chaîne "\(myobj)" préfèrera l' String.init<T: LosslessStringConvertible>(_:) , mais retombera sur init<T>(describing:) si la valeur n'est pas LosslessStringConvertible .

Caractères spéciaux

Certains caractères nécessitent une séquence d'échappement spéciale pour les utiliser dans les littéraux de chaîne:

Personnage Sens
\0 le caractère nul
\\ un simple backslash, \
\t un caractère de tabulation
\v un onglet vertical
\r un retour de chariot
\n un saut de ligne ("newline")
\" une double citation, "
\' une seule citation, '
\u{n} le point de code Unicode n (en hexadécimal)

Exemple:

let message = "Then he said, \"I \u{1F496} you!\""

print(message) // Then he said, "I 💖 you!"