2016-05-14 6 views
0

Ich möchte drei zufällig generierte Zahlen vergleichen, um zu sehen, ob zwei von ihnen gleich sind. Ich habe eine if-Anweisung, die funktioniert, aber ich würde wirklich gerne die beiden anderen wenn if-Anweisungen in eine, wenn möglich kombinieren. Ich denke, es muss eine Möglichkeit geben, oder zu verwenden, aber es ist nur ein binärer Operator. Gibt es eine Möglichkeit, zu verwenden? und machen Sie ein ternäres Argument in einer anderen if-Anweisung?Mit If-Anweisung, um gegen 3 Möglichkeiten zu überprüfen

 if aRand == bRand && bRand == cRand{ 
      resultLabel.text = "3 out of 3" 
     } else if 
      (aRand == bRand || aRand == cRand) { 
      resultLabel.text = "2 out of 3" 
     } else if 
     (bRand == cRand) { 
     resultLabel.text = "2 out of 3" 
     } else { 
      resultLabel.text = "No Match" 
     } 

Antwort

4

es

if aRand == bRand || aRand == cRand || bRand == cRand 

hier ein swiftier Ausdruck

let rand = (aRand, bRand, cRand) 
switch rand { 
    case let (a, b, c) where a == b && b == c : resultLabel.text = "3 out of 3" 
    case let (a, b, c) where a == b || a == c || b == c : resultLabel.text = "2 out of 3" 
    default : resultLabel.text = "No match" 
} 
+0

Vielen Dank, wenn aRand == bRand || aRand == cRand || bRand == CRand ist was ich brauchte. Ich denke, das war zu einfach und ich schätze die Antworten. Ich bin mir sicher, dass ich das versucht habe und es ursprünglich nicht funktioniert hat, aber ich habe es wieder versucht und diesmal ist es passiert. – Chawker21

+0

Ich mag den schnelleren Ausdruck auch, Es scheint viel anpassungsfähiger zu Expansion. Ich werde das ausprobieren und sehen, wo ich damit hingehen kann. Danke noch einmal! – Chawker21

1

Kürzere Weg Eigentlich:

if (aRand == bRand && bRand == cRand) { 

    resultLabel.text = "3 out of 3" 

} else if (aRand == bRand || bRand == cRand || aRand == cRand) { 

    resultLabel.text = "2 out of 3" 

} else { 

    resultLabel.text = "No Match" 
} 
1

Wenn ich Ihren Algorithmus richtig verstehen, Sie können if ganz vermeiden:

let aRand = 0 
let bRand = 1 
let cRand = 1 

let allValues = [aRand, bRand, cRand] 
let uniqueValues = Set(allValues) 

let text: String 

if (uniqueValues.count == allValues.count) { 
    text = "No match" 
} else { 
    text = String(format: "%i out of %i", allValues.count - uniqueValues.count + 1, allValues.count) 
} 

print(text) 

Diese jede Anzahl der Werte für arbeiten.

Verwandte Themen