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

  • 本文关键字:元组 整数 范围内 swift
  • 更新时间 :
  • 英文 :


下面的匹配开关语句有时似乎有效,而当我更改范围时,这些选择有时似乎没有意义。似乎是随机的。当试图在其他元组中的整数范围内匹配整数元组时,我能期望下面的设置是正确的吗?

// 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")

该开关只匹配每个元素严格属于该范围的情况。这就像元组中所有部分的AND条件。

你还使用了fallthrough,这意味着当看到第二个或第三个大小写块时,你总是会看到'it's 3rd '(你是说3rd吗?)。

所以在这种情况下,因为倒数第二个元组值是2,所以不适合第一个case语句。第二个和第三个被打印出来,因为你掉到下一个。

最新更新