匹配元组范围内的整数元组

时间:2014-08-02 18:45:29

标签: swift

以下匹配的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")

1 个答案:

答案 0 :(得分:1)

该开关仅匹配每个元素严格落入该范围内的情况。所以这就像你元组中所有部分的AND条件。

你也在使用fallthrough,这意味着当看到第二个或第三个案例块时,你总是会看到'它是第3个'(你的意思是第3个?)。

所以在这种情况下,因为你的倒数第二个元组值是2,所以它不适合第一个case语句。打印第2和第3页是因为您要进入下一个。