Comment est-ce que je fais ceci dans Swift?
(someboolexpression ? "Return value 1" : "Return value 2")
(non, je n'ai pas encore lu tout le manuel ... je l'ai probablement raté à la page 2!)
OK, sa page 91 et celle ci-dessus semblent correctes. Cependant, j'essaye d'utiliser ceci dans une chaîne comme ceci:
println(" some string \(some expression ? "Return value 1" : "Return value 2")"
mais le compilateur n'est pas content. Une idée si cela est possible?
C'est aussi proche que j'ai pu obtenir
let exists = "exists"
let doesnotexist= "does not exist"
println(" something \(fileExists ? exists : doesnotexist)")
Si vous cherchez un one-liner pour le faire, vous pouvez tirer le ?:
opération en dehors de l'interpolation de chaîne et concaténation avec +
au lieu:
let fileExists = false // for example
println("something " + (fileExists ? "exists" : "does not exist"))
Les sorties:
quelque chose n'existe pas
Vous pouvez utiliser le nouvel opérateur néo-coalescent , introduit dans Swift. Il retournera la valeur par défaut si someOptional
est nil
let someValue = someOptional ?? ""
Dans le cas où someOptional
est faux, cet opérateur attribue ""
à someValue
var firstBool = true
var secondBool: Bool
firstBool == true ? (secondBool = true) : (secondBool = false)
Si dans ce cas, le secondBool est remplacé par le premier. Vous pouvez le faire aussi avec des entiers et des chaînes
Cela s'appelle un "opérateur ternaire".
En ce qui concerne la réponse de @ Esqarrouth, je pense qu'un meilleur format serait:
Swift 3:
var firstBool = true
var secondBool: Bool
secondBool = firstBool ? true : false
C'est pareil que:
var firstBool = true
var secondBool: Bool
if (firstBool == true) {
secondBool = true
} else {
secondBool = false
}
Tu étais si proche. Juste besoin de l'affecter à une variable:
self.automaticOption = (automaticOptionOfCar ? "Automatic" : "Manual")
Aucune idée pourquoi cette même expression ne peut pas être incorporée dans une chaîne?
Vous pouvez le faire:
let a = true
let b = 1
let c = 2
println("\(a ? 1: 2)")
Bien,
Si vous concaténez la condition avec la chaîne en utilisant l'opérateur +, cela devrait fonctionner.
Par conséquent, Mike a raison.
var str = "Something = " + (1 == 1 ? "Yes" : "No")
solution simple j'ai utilisé dans mes projets
Swift 3 +
var retunString = (state == "OFF") ? "securityOn" : "securityOff"
J'ai utiliser inline conditionnel comme ceci:
la fonction isFavorite retourne un booléen
favoriteButton.tintColor = CoreDataManager.sharedInstance.isFavorite(placeId: place.id, type: 0) ? UIColor.white : UIColor.clear
tourOperatorsButton.isHidden = place.operators.count != 0 ? true : false