我已经尝试过使用if比较数组与数组:
let ArrayA = ["A", "B"]
if ArrayA == ["A", "B"] {
print("true")
} else {
print("false")
}
结果将是
true
,那么我们如何使用switch和case?使用Swift语言可以做到吗? 最佳答案
您可以将案例与where
谓词一起使用:
let array = ["A", "B"]
switch array {
case _ where array == ["A", "B"]: print("AB")
case _ where array == ["C", "D"]: print("CD")
default: print("default")
}
如果确实需要,可以定义一个调用
~=
的模式匹配运算符(==
)。 switch
语句查找模式匹配运算符的定义,这些定义接受给定的模式和候选者以确定case
是否匹配:let array = ["A", "B"]
func ~= <T: Equatable>(pattern: [T], candidate: [T]) -> Bool {
return pattern == candidate
}
switch array {
case ["A", "B"]: print("AB")
case ["C", "D"]: print("CD")
default: print("default")
}
我会建议不要使用此,因为尚不清楚这种情况是否在进行
==
检查,contains(_:)
,hasPrefix(_:)
等。