Почему я не могу использовать константу кортежа в качестве регистра в операторе switch
Я решил поиграть со случаями и кортежами Swift. Похоже, одна из круче особенностей языка.
Я решил играть с кортежами месяц / день / год. К моему удивлению, я не могу использовать постоянное значение кортежа в качестве регистра в операторе switch. Вот пример (можно вставить в игровую площадку и запустить)
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")
}
Закомментированный код,case joesBirthday:
, не будет компилироваться (в Xcode 6.3, если это имеет значение). Приведенный ниже случай (где я перечисляю все элементы кортежа joesBirthday отдельно), который труднее набирать и труднее читать, работает)
Моя игровая площадка разбила XCode при вводе этого текста, и снова разбилась, пытаясь перезапустить XCode, поэтому у меня возникли проблемы с сообщением кода ошибки.
Хорошо, я наконец-то получил XCode, чтобы остановить сбой (после 4 сбоев подряд. Yayyy!) Ошибка «Двоичный оператор~=
не может быть применен к двум операндам mdyTuple. "
Почему он пытается использовать~=
операнд? Разве не похожи на кортежи?
Есть ли некоторыечистый альтернативный синтаксис, который позволяет мне использовать постоянный кортеж в случае оператора switch?