以下匹配的switch语句simetimes似乎有效,而其他时候我更改范围似乎有时候选择没有意义。似乎是随机的。在尝试匹配其他元组中整数范围内的整数元组时,我可以期望下面的设置是正确的吗?
// tuple case branches
import UIKit
// tuple case branches
let d = (1, 21, 15, 3, 2, 0)
switch d {
case (1...100, 21...100, 14...100, 3...100, 3...100, 0...100):
println("it's 1st") // it's 1st
fallthrough
case (1...100, 21...100, 15...100, 3...100, 2...100, 0...100):
println("it's 2nd")
fallthrough
case (1...100, 21...100, 15...100, 3...100, 2...100, 0...100):
println("it's 3nd")
default:
println("not 1st or 2nd or 3rd")
答案 0 :(得分:1)
该开关仅匹配每个元素严格落入该范围内的情况。所以这就像你元组中所有部分的AND条件。
你也在使用fallthrough,这意味着当看到第二个或第三个案例块时,你总是会看到'它是第3个'(你的意思是第3个?)。
所以在这种情况下,因为你的倒数第二个元组值是2,所以它不适合第一个case语句。打印第2和第3页是因为您要进入下一个。