5

斯威夫特 2

let gap = CGFloat(randomInRange(StackGapMinWidth...maxGap))

调用中缺少参数标签“范围:”

Swift 3 - 新错误

let gap = CGFloat(randomInRange(range: StackGapMinWidth...maxGap))

没有“...”候选产生预期的上下文结果类型“范围”

这些结果类型存在“...”的重载:ClosedRange、CountableClosedRange

4

1 回答 1

7

从 Swift 3 开始,..<...产生不同类型的范围:

  • ..<产生一个Range(或CountableRange,取决于基础类型),它描述了一个不包括上限的半开范围。
  • ...产生一个ClosedRange(or CountableClosedRange),它描述了一个包含上限的封闭范围。

如果randomInRange()计算给定范围内的随机数, 包括上限,则应将其定义为

func randomInRange(range: ClosedRange<Int>) -> Int {
    // ...
}

你可以把它称为

let lo = 1
let hi = 10
let r = randomInRange(range: lo ... hi)
于 2016-06-20T07:24:38.117 回答