我正在学习快速排序,需要组成一个复杂的数组。
代码如下:

var arrayOne = 1...500
var arrayTwo = 501...1000
var array_one = arrayOne.reversed()
var array_two = arrayTwo.reversed()
var array = arrayOne + arrayTwo

我想把arrayOne + arrayTwo合并到array
我不能使用+运算符,Xcode提示我
二进制运算符“+”不能应用于
“CountableClosedRange”操作数
我知道怎么用for循环得到它。
确实需要优雅的方式。例如高阶函数。

最佳答案

1...500是一个范围,(1...500).reversed()是一个集合。两者都是序列,因此可以将它们附加到数组中:

let rangeOne = 1...500
let rangeTwo = 501...1000

let array = [] + rangeOne.reversed() + rangeTwo.reversed()

// [500, 499, ..., 2, 1, 1000, 999, ..., 502, 501]

其他解决方案包括:
let array = Array(rangeOne.reversed()) + rangeTwo.reversed()
let array = Array([rangeOne.reversed(), rangeTwo.reversed()].joined())
let array = Array(rangeOne.reversed()) + Array(rangeTwo.reversed())
let array = [rangeOne.reversed(), rangeTwo.reversed()].flatMap { $0 }

关于swift - 如何在Swift中合并两个ClosedRange?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51257676/

10-12 13:56