1
votes

Différence entre les impressions d'interpolation de chaîne Swift

Je suis nouveau dans le développement iOS, alors que je passais par l'interpolation de chaînes. Je veux connaître la clarification entre la sortie de ces instructions d'impression:

var value = "5"
print("Values is: \(value)")
print("Values is:", value)
print("Values is: " + value)

Output is : Values is: 5
Values is: 5
Values is: 5


2 commentaires

En relation: stackoverflow.com/questions/43963356/print-in-swift-3


Il est important de noter que vous devez généralement éviter le formulaire + . Même si un seul + comme celui-ci convient généralement, si vous commencez à les enchaîner comme "name:" + name + ", value:" + value , vous pouvez augmenter considérablement temps de compilation (parfois par ordre de grandeur). Le compilateur Swift a beaucoup de mal à gérer plusieurs opérateurs + dans une seule expression car il y a tellement de surcharges.


4 Réponses :


2
votes

Pratiquement les trois formulaires font la même chose.

Les différences sont

  1. Syntaxe d'interpolation de chaîne. Vous pouvez tout mettre entre parenthèses intérieures qui répond au protocole CustomStringConvertible . Syntaxe du paramètre
  2. Variadic . print est déclaré func print (_ items: Any ..., . Any ... signifie que vous pouvez passer plusieurs éléments séparés par des virgules qui sont traité comme un tableau.
  3. Syntaxe de concaténation de chaînes: les chaînes sont concaténées avec l'opérateur +

Si 5 était Int plutôt que String les formes 1 et 2 sont valides mais pas la forme 3


1 commentaires

Et 2. fait soit 1. soit 3. "à l'intérieur". Et il convient de noter que 1. et 3. peuvent être utilisés non seulement pour créer une chaîne à afficher immédiatement.



0
votes

Dans cette instruction d'impression, la sortie est la même mais il y en a différents comme dans la première instruction, utilisez la variable \ (value) dans la chaîne de données.

La deuxième instruction ajoute des données dans votre chaîne value avec garder un espace

La troisième instruction concat simplement deux valeurs (elle ne garde pas d'espace entre deux valeurs), Dans cette instruction "+" signe utilisé comme surcharge d'opérateur pour concaténer deux valeurs

let value = "5"
print("Values is: \(value)") //use variable value within string
print("Values is:", value)   //append value, with keep one space
print("Values is: " + value) //just concat two value 


0 commentaires

0
votes

var value = "5"

print ("Les valeurs sont: (valeur)") // Affiche la valeur en tant que partie de la chaîne. Si vous utilisez print ("Values ​​is: (value)"), il imprimera la sortie sans espace.

print ("Values ​​is:", value) // vous n'avez pas besoin d'ajouter un espace séparé pour ajouter la valeur à sting. Il ajoutera automatiquement la valeur à la chaîne avec un espace.

print ("Les valeurs sont:" + valeur) // Il affichera une erreur si vous utilisez la valeur integer "L'opérateur binaire '+' ne peut pas être appliqué aux opérandes de type 'String' et 'Int'"

sinon cela fonctionnera. Et si vous voulez concaténer int avec sting, vous devez faire quelque chose comme ci-dessous: -

print ("Values ​​is:" + String (value)) // c'est un nombre de concaténation normal avec une chaîne

Tout ce qui précède affichera l'exact


0 commentaires

0
votes

Pour une telle question, nous devrions jeter un œil à print (_ : separator: terminator :) paramètres:

1) items : est un paramètre variadique de type Tout , ce qui signifie que vous pouvez lui transmettre zéro ou plusieurs éléments. Exemple:

Values is: 5
     ^    ^^
     |    ||__ item #2
 item #1  |
          |
   default separator (" ")

2) separator : la chaîne à imprimer entre chaque élément (comme mentionné dans son documentation) . Exemple:

print("Values is:", value)

3) terminator : la chaîne à imprimer une fois que tous les éléments ont été imprimés (comme mentionné dans sa documentation) . Exemple:

// interpolation:
let name = "Jack"
let greetingMessage = "Greetings, \(name)"
print(greetingMessage) // => Greetings, Jack

// concatenating:
let concatenated = "Greetings" + ", " + "Sara"
print(concatenated) // => "Greetings" + ", " + "Sara"

Retour à vos cas:

Tout d'abord, gardez à l'esprit que pour chacun de vos trois les cas où vous ne transmettez que le paramètre items ; Il est valide - bien sûr - car separator et terminator ont des valeurs par défaut comme "" et \ n .

Maintenant, pour les première et troisième instructions d'impression

print("Values is: \(value)")
print("Values is: " + value)

ce qui se passe est: en fait vous traitent de Strings , il ne s'agit pas de print lui-même. Vous pouvez faire une interpolation dans les chaînes ainsi que d'utiliser le + pour concaténer des chaînes sans print:

print(101, 40.45, false, ["Hi", "Greetings"], terminator: " ==>")
// 101 40.45 false ["Hi", "Greetings"] ==>

Ce qui signifie que vous transmettez un élément unique String , indépendamment de l'interpolation ou de la concaténation.

Vous pouvez également vérifier L'implémentation de la fonction + dans Swift . En gros, c'est un append !


La deuxième instruction print :

print(101, 40.45, false, ["Hi", "Greetings"], separator: " <=> ")
// 101<=>40.45<=>false<=>["Hi", "Greetings"]

Ce qui se passe ici est: vous passez deux éléments; Selon la valeur par défaut du séparateur , le résultat est:

La valeur est: 5

As:

print() // passing nothing
print("Hello") // passing single item (String)
print(101, 40.45, false, ["Hi", "Greetings"]) // passing multiple items


1 commentaires

Merci :) pour votre clarification détaillée.