我已经尝试过使用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(_:)等。

10-05 20:22
查看更多