无法将类型 'Range<Int>' 的值转换为预期的参数类型 'Range<_>'

Cannot convert value of type 'Range<Int>' to expected argument type 'Range<_>'

使用 Swift 4.2,我在这个函数中得到标题作为错误:

func jitter(range: Int) -> Int {
    return Int.random(in: 0..<range, using: SystemRandomNumberGenerator())
}

问题:

  1. Range<_> 的确切含义是什么?
  2. 有没有更好的方法得到这个?我只是想在动画循环中使用一个小的随机数。

Swift 编译器给您一条错误消息。问题是 Int.random(in:using:) 的第二个参数必须传递 inout (即带有 & 前缀)。这有效:

func jitter(range: Int) -> Int {
    var rng = SystemRandomNumberGenerator()
    return Int.random(in: 0..<range, using: &rng)
}

更简单,完全省略 using: 参数(无论如何,SystemRandomNumberGenerator 是默认 RNG):

func jitter(range: Int) -> Int {
    return Int.random(in: 0..<range)
}