Swift 动态范围 1...12.contains(1) 无法使用 (Int) 调用 'contains'

Swift Range on the fly 1...12.contains(1) Cannot invoke 'contains' with (Int)

不可能创建一个范围并像这样调用它的包含方法:

1...12.contains(1)

当我创建一个 var range = 1...12 并打印它的 dynamicType 时,我得到一个 Swift.Range<Swift.Int>,所以我猜这不是类型不匹配问题,是吗?

在这种情况下,问题在于运算符优先级:

(1...12).contains(1)   // -> true

(否则代码看起来确实模棱两可)

将范围放在括号中,它应该可以工作:

(1...12).contains(1)

另一个检查这个的好方法:(使用模式匹配运算符)

if 2...5 ~= 4 {
  // do something
}