Je dois concaténer un String
et Int
comme ci-dessous:
let myVariable: Int = 8
return "first " + myVariable
Mais il ne compile pas, avec l'erreur:
L'opérateur binaire '+' ne peut pas être appliqué aux opérandes de type 'String' et 'Int'
Quelle est la bonne façon de concaténer un String + Int?
Si vous voulez mettre un nombre dans une chaîne, vous pouvez simplement utiliser String Interpolation :
return "first \(myVariable)"
Vous avez DEUX options;
return "first " + String(myVariable)
ou
return "first \(myVariable)"
Pour ajouter un Int à une chaîne, vous pouvez faire:
return "first \(myVariable)"
Si vous en faites beaucoup, pensez à un opérateur pour le rendre plus lisible:
func concat<T1, T2>(a: T1, b: T2) -> String {
return "\(a)" + "\(b)"
}
let c = concat("Horse ", "cart") // "Horse cart"
let d = concat("Horse ", 17) // "Horse 17"
let e = concat(19.2345, " horses") // "19.2345 horses"
let f = concat([1, 2, 4], " horses") // "[1, 2, 4] horses"
operator infix +++ {}
@infix func +++ <T1, T2>(a: T1, b: T2) -> String {
return concat(a, b)
}
let c1 = "Horse " +++ "cart"
let d1 = "Horse " +++ 17
let e1 = 19.2345 +++ " horses"
let f1 = [1, 2, 4] +++ " horses"
Vous pouvez bien sûr utiliser n'importe quel opérateur infixe valide, pas seulement +++
.
Optional
le mot-clé apparaîtra lorsque vous aurez marqué la variable comme facultative avec !
lors de la déclaration.
Pour éviter le mot-clé facultatif dans la sortie d'impression, vous avez deux options:
(!)
, À côté de la variableDans votre cas, cela fonctionnerait très bien
return "first \(myVariable!)"
Voici la documentation sur chaîne et caractères
var variableString = "Horse"
variableString += " and carriage"
// variableString is now "Horse and carriage"