Wie mache ich das in Swift?
(someboolexpression ? "Return value 1" : "Return value 2")
(Nein, ich habe noch nicht das gesamte Handbuch gelesen ... Ich habe es wahrscheinlich auf Seite 2 verpasst!)
OK, es ist auf Seite 91 und die obigen Angaben scheinen korrekt zu sein. Ich versuche jedoch, dies in einer Zeichenfolge wie der folgenden zu verwenden:
println(" some string \(some expression ? "Return value 1" : "Return value 2")"
aber der compiler ist nicht glücklich. Irgendeine Idee, wenn dies möglich ist?
Das ist so nah wie ich nur konnte
let exists = "exists"
let doesnotexist= "does not exist"
println(" something \(fileExists ? exists : doesnotexist)")
swift
conditional
Duncan Groenewald
quelle
quelle
let doesnotexist
oder ein Präprozessorfehler wird auftreten und stellen Sie sicher, dass Sielet fileExists: Bool
einige wo vor derprintln
Anweisung deklariert haben, die eigentlichprint
ab Swift 2.0 sein sollte. Ansonsten habe ich Ihren Code ausprobiert, er funktioniertAntworten:
Wenn Sie nach einem Einzeiler suchen, können Sie die
?:
Operation aus der Zeichenfolgeninterpolation herausziehen und+
stattdessen verketten mit :let fileExists = false // for example println("something " + (fileExists ? "exists" : "does not exist"))
Ausgänge:
quelle
Sie können den neuen Nil-Coalescing-Operator verwenden , der in Swift 3 eingeführt wurde . Wenn dies der Fall
someOptional
ist, wird der Standardwert zurückgegebennil
.let someValue = someOptional ?? ""
Wenn hier
someOptional
istnil
, wird dieser Operator zuweisen""
zusomeValue
.quelle
var firstBool = true var secondBool: Bool firstBool == true ? (secondBool = true) : (secondBool = false)
In diesem Fall wird der zweiteBool in den erstenBool geändert. Sie können dies auch mit ganzen Zahlen und Zeichenfolgen tun
quelle
Es wird als " ternärer Operator " bezeichnet.
In Bezug auf die Antwort von @ Esqarrouth denke ich, dass ein besseres Format wäre:
Swift 3:
var firstBool = true var secondBool: Bool secondBool = firstBool ? true : false
Dies ist das gleiche wie:
var firstBool = true var secondBool: Bool if (firstBool == true) { secondBool = true } else { secondBool = false }
quelle
Gut,
Wenn Sie die Bedingung mit dem Operator + mit der Zeichenfolge verketten, sollte dies funktionieren.
Deshalb ist Mike richtig.
var str = "Something = " + (1 == 1 ? "Yes" : "No")
quelle
Du warst so nah dran. Muss nur einer Variablen zugewiesen werden:
self.automaticOption = (automaticOptionOfCar ? "Automatic" : "Manual")
Bearbeiten:
Du kannst das tun:
let a = true let b = 1 let c = 2 println("\(a ? 1: 2)")
quelle
println("something \(automaticOptionOfCar ? "Automatic" : "Manual")")
?einfache Lösung, die ich in meinen Projekten verwendet habe
Swift 3+
var retunString = (state == "OFF") ? "securityOn" : "securityOff"
quelle
Ich habe Inline-Bedingungen wie folgt verwendet:
Die Funktion isFavorite gibt einen Boolen zurück
favoriteButton.tintColor = CoreDataManager.sharedInstance.isFavorite(placeId: place.id, type: 0) ? UIColor.white : UIColor.clear
tourOperatorsButton.isHidden = place.operators.count != 0 ? true : false
quelle