无法将类型“ Range <int>”的值转换为预期的参数类型“ Range <_>”

时间:2019-01-17 23:41:28

标签: swift swift4.2

使用Swift 4.2,在此函数中出现标题错误:

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

问题:

  1. Range <_>到底是什么意思?
  2. 是否有更好的方法来做到这一点?我只是想在动画循环中添加一个小的随机数。

1 个答案:

答案 0 :(得分:1)

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)
}