参数类型'Range <int>'不符合预期类型'Sequence'Swift3

时间:2016-10-03 05:15:09

标签: ios arrays swift range swift3

我在Swift3之后得到错误。我该如何解决这个错误?这些方法提供非重复的随机数。

 func uniqueRandoms(_ count: Int, inRange range: Range<Int>, blacklist: [Int] = []) -> [Int] {
    var r = [Int](range)
        .filter{ !blacklist.contains($0) }
        .shuffle()

    return Array(r[0..<count])
}



extension Array {
func shuffle() -> Array<Element> {
    var newArray = self

    for i in 0..<newArray.count {
        let j = Int(arc4random_uniform(UInt32(newArray.count)))
        guard i != j else { continue }
        swap(&newArray[i], &newArray[j])
    }

    return newArray
}
}

由于

2 个答案:

答案 0 :(得分:14)

使用范围的lowerBoundupperBound属性为[Int]数组创建序列。

var r = [Int](range.lowerBound..<range.upperBound)

答案 1 :(得分:1)

我建议您使用CountableRange<Int>