我决定玩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值。 –