Warum kann ich in einer switch-Anweisung keine Tupelkonstante als Fall verwenden?

Ich habe mich entschlossen, mit Swift-case-Anweisungen und -Tupeln zu spielen. Es sieht aus wie eine der cooleren Funktionen der Sprache.

Ich habe mich entschieden, mit Monat / Tag / Jahr-Tupeln zu spielen. Zu meiner Überraschung kann ich keinen konstanten Tupelwert als Fall in einer switch-Anweisung verwenden. Hier ist ein Beispiel (kann in einen Spielplatz eingefügt und ausgeführt werden)

import UIKit
typealias mdyTuple = (month: Int, day: Int, year: Int)
let joesBirthday: mdyTuple = (month: 6, day: 7, year: 1978)
let someday: mdyTuple = (6, 7, 1978)

switch someday
{
  //---------
  //The line "case joesBirthday" won't compile.
  //case joesBirthday:
  //  println("Joe was born on this day"
  //---------
case (joesBirthday.month, joesBirthday.day, joesBirthday.year):
  println("Joe was born on this day")
case (joesBirthday.month, joesBirthday.day, let year):
  println("Joe is \(year-joesBirthday.year) today")
default:
  println("Some other day")
}

Der auskommentierte Code,case joesBirthday: wird nicht kompiliert (in Xcode 6.3, wenn das wichtig ist). Der folgende Fall (in dem ich alle Elemente des joesBirthday-Tupels separat aufführe), der sowohl schwerer zu tippen als auch schwerer zu lesen ist, funktionier

Mein Spielplatz stürzte bei der Eingabe von Xcode ab und stürzte WIEDER beim Versuch ab, Xcode neu zu starten. Daher habe ich Probleme, den Fehlercode zu melden.

Ok, ich habe endlich Xcode zum Absturz gebracht (nach 4 Abstürzen hintereinander. Yayyy!) Der Fehler ist "Binary operator~= kann nicht auf zwei mdyTuple-Operanden angewendet werden. "

Warum versucht es, das @ zu verwend~= Operand? Sind Tupel nicht gleichzusetzen?

Gibt es einigesaube Alternative Syntax, mit der ich bei einer switch-Anweisung ein konstantes Tupel verwenden kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage