2017-06-14 1 views
1

Ich habe gerade etwas Code in Xcode's Spielplatz getestet und ich versuche zu lernen, wie man if-Anweisungen verwendet. Wie kann ich diesen Code korrigieren? Ich bekomme ein paar Fehler beim Kompilieren. Einer von ihnen ist "Kann Wert nicht zuweisen: '& &' gibt unveränderlichen Wert zurück". Ist es möglich, den Code in der gleichen Zeit lesbarer und einfacher zu machen, damit er korrekt ist?Wie kann ich diesen Code korrigieren, während es einfacher macht

Der Code, den ich schrieb:

var minutes = 10 

var name = "Marcus" 

var hours = 2 

var status : String = " " 

if minutes = nil && hours = !nil { 

    status = "\(name) spent \(hours) hrs online" 

} else if minutes = !nil && hours = nil { 

    status = "\(name) spent \(minutes) mins online" 

} else if minutes = !nil && hours = !nil { 

    status = "\(name) spent \(hours) hrs & \(minutes) mins online" 

} 

print(status) 

Antwort

2

Wenn Sie hours und minutes so definieren, werden sie gleich Null, so keine Notwendigkeit, nie zu überprüfen. Sie müssen sie als Optionals deklarieren. Und switch bietet eine saubere Lösung zu dem, was Ihr wollen:

var hours: Int? = 2 
var minutes : Int? = 10 
var name = "Marcus" 

var status = "" 
switch (hours, minutes) { 
case (nil, nil): 
    status = "both hours and minutes cannot be nil" 
case (_, nil): 
    status = "\(name) spent \(hours!) hrs online" 
case (nil, _): 
    status = "\(name) spent \(minutes!) mins online" 
default: 
    status = "\(name) spent \(hours!) hrs & \(minutes!) mins online" 
} 

print(status) 
1

Mit = statt == einige der Fehler verursacht.

Nicht das Testen für nil, wenn die Variablen keine Optionals sind, löst auch Warnungen aus.

Hier ist ein Code, der in dem Sie kompiliert nun mit der Logik spielen, um kann:

var minutes: Int? = 10 
var name: String? = "Marcus" 
var hours: Int? = 2 
var status : String = "Hello" 

if minutes == nil && hours != nil { 
    status = "\(name) spent \(hours) hrs online" 
} else if minutes != nil && hours == nil { 
    status = "\(name) spent \(minutes) mins online" 
} else if minutes != nil && hours != nil { 
    status = "\(name!) spent \(hours!) hrs & \(minutes!) mins online" 
} 

print(status)