Невозможно преобразовать значение типа 'Range <Int>' в ожидаемый тип аргумента 'Range <_>' - PullRequest
0 голосов
/ 18 января 2019

Используя Swift 4.2, я получаю заголовок как ошибку в этой функции:

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

Вопросы:

  1. Что именно означает Range <_>?
  2. Есть ли лучший способ получить это? Я просто хочу маленькое случайное число внутри цикла анимации.

1 Ответ

0 голосов
/ 18 января 2019

Компилятор Swift выдает неверное сообщение об ошибке. Проблема в том, что второй аргумент Int.random(in:using:) должен быть передан inout (то есть с префиксом &). Это работает:

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

Еще проще, вообще не указывать параметр using: (SystemRandomNumberGenerator в любом случае является ГСЧ по умолчанию):

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