2016-09-12 5 views
0

Ich kann den ternären bedingten Operator für eine if {} else {} Anweisung wie folgt verwenden: a ? x : y oder question ? answer1 : answer2.Ternär Bedingte Operator für Null/nicht Null

Ist es möglich, dieses Format zu verwenden, wenn zu prüfen, ob statt a ist true oder false, a == nil oder a != nil?


UPDATE: Dies war wohl das größte Gehirn Furz meiner Karriere.

+1

a == nil und a! = Nil Ergebnis in einem wahren oder falschen, also ja. Es würde so aussehen: a == nil? x: y – ohr

+0

'a?' ist eine Kurzform für 'a == true?', so dass Sie alles, was mit Equatable übereinstimmt, für die Gleichung überprüfen können. Hast du jemals Spielplätze benutzt? ;-) – vadian

+0

Ich bin kein Python-Entwickler, sondern nehme an, dass es eine Möglichkeit gibt, diese Art von Dingen mit dem Terminal/Kommando interaktiv zu testen. Oder Sie können einfach verwenden: https://www.python.org/shell/ –

Antwort

5

Sie können dies tun:

(a == nil) ? x : y 

(. Runde Klammern sind nicht erforderlich, aber kann der Code klarer machen)

Sie können dies tun, wenn Sie wollen etwas verwirrender:

a.map { _ in x } ?? y 
+0

das ist, was ich gesucht habe. Danke rauben. – chicobermuda

1
a != nil ? a! : b 

Der obige Code verwendet den ternären Bedingungsoperator r und erzwungenes Auspacken (a!), um auf den in a eingeschlossenen Wert zuzugreifen, wenn a nicht null ist, und andernfalls b zurückzugeben. Der Koaleszenzoperator nil bietet eine elegantere Möglichkeit, dieses konditionale Prüfen und Entpacken in einer prägnanten und lesbaren Form zu kapseln.

Beispiel:

let defaultColorName = "red" 
var userDefinedColorName: String? // defaults to nil 

var colorNameToUse = userDefinedColorName ?? defaultColorName 
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red" 

Referenz: Apple documentation

+0

@Hamish: Ja, es war für die Überprüfung, ob die Saite Null ist oder nicht! – Lion

0

können Sie ternären Operator verwenden, solange Ihre Aussage Booleschen Wert zurückgibt. Hier gibt a == nil oder a! = Nil den booleschen Wert zurück, so dass Sie "Yes" verwenden können.