我決定玩Swift case語句和元組。它看起來像是該語言的一個較酷的功能。我決定玩月/日/年元組。令我驚訝的是,我不能在switch語句中使用常量元組值。下面是一個例子(可以被粘貼到一個遊樂場和運行)爲什麼我不能在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操作數」。
爲什麼它試圖使用~=
操作數?是不是像元組equatable?
是否有一些乾淨替代語法,讓我在switch語句的情況下使用常量元組?
如果您在使用開關元組指標是什麼? – msmq
like'case(joesBirthday.0,joesBirthday.1,joesBirthday.2):'?當然,這是有效的,但這並不比命名的元素語法更好。我想直接列出一個元組常量作爲一個case值。 –