swift 将 Range<Int> 转换为 [Int]
swift convert Range<Int> to [Int]
如何将范围转换为数组
我试过了:
let min = 50
let max = 100
let intArray:[Int] = (min...max)
得到错误Range<Int> is not convertible to [Int]
我也试过:
let intArray:[Int] = [min...max]
和
let intArray:[Int] = (min...max) as [Int]
它们也不起作用。
我想通了:
let intArray = [Int](min...max)
赞扬他人。
您需要使用 Range<Int>
创建 一个 Array<Int>
而不是 casting 它。
let intArray: [Int] = Array(min...max)
使用map
let min = 50
let max = 100
let intArray = (min...max).map{[=10=]}
将Range放入init.
let intArray = [Int](min...max)
做:
let intArray = Array(min...max)
这应该可以工作,因为 Array
有一个采用 SequenceType
的初始化程序并且 Range
符合 SequenceType
.
有趣的是你不能(至少,Swift 3 和 Xcode 8)直接使用 Range<Int>
对象:
let range: Range<Int> = 1...10
let array: [Int] = Array(range) // Error: "doesn't conform to expected type 'Sequence'"
因此,如前所述,您需要手动 "unwrap" 您的范围如下:
let array: [Int] = Array(range.lowerBound...range.upperBound)
即,您可以仅使用文字。
因为Swift3/Xcode8有一个CountableRange
类型,可以派上用场:
let range: CountableRange<Int> = -10..<10
let array = Array(range)
print(array)
// prints:
// [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
可以直接在for
-in
循环中使用:
for i in range {
print(i)
}
您可以在这样的函数中使用 reduce() 实现 ClosedRange 和 Range 实例间隔。
func sumClosedRange(_ n: ClosedRange<Int>) -> Int {
return n.reduce(0, +)
}
sumClosedRange(1...10) // 55
func sumRange(_ n: Range<Int>) -> Int {
return n.reduce(0, +)
}
sumRange(1..<11) // 55
如何将范围转换为数组
我试过了:
let min = 50
let max = 100
let intArray:[Int] = (min...max)
得到错误Range<Int> is not convertible to [Int]
我也试过:
let intArray:[Int] = [min...max]
和
let intArray:[Int] = (min...max) as [Int]
它们也不起作用。
我想通了:
let intArray = [Int](min...max)
赞扬他人。
您需要使用 Range<Int>
创建 一个 Array<Int>
而不是 casting 它。
let intArray: [Int] = Array(min...max)
使用map
let min = 50
let max = 100
let intArray = (min...max).map{[=10=]}
将Range放入init.
let intArray = [Int](min...max)
做:
let intArray = Array(min...max)
这应该可以工作,因为 Array
有一个采用 SequenceType
的初始化程序并且 Range
符合 SequenceType
.
有趣的是你不能(至少,Swift 3 和 Xcode 8)直接使用 Range<Int>
对象:
let range: Range<Int> = 1...10
let array: [Int] = Array(range) // Error: "doesn't conform to expected type 'Sequence'"
因此,如前所述,您需要手动 "unwrap" 您的范围如下:
let array: [Int] = Array(range.lowerBound...range.upperBound)
即,您可以仅使用文字。
因为Swift3/Xcode8有一个CountableRange
类型,可以派上用场:
let range: CountableRange<Int> = -10..<10
let array = Array(range)
print(array)
// prints:
// [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
可以直接在for
-in
循环中使用:
for i in range {
print(i)
}
您可以在这样的函数中使用 reduce() 实现 ClosedRange 和 Range 实例间隔。
func sumClosedRange(_ n: ClosedRange<Int>) -> Int {
return n.reduce(0, +)
}
sumClosedRange(1...10) // 55
func sumRange(_ n: Range<Int>) -> Int {
return n.reduce(0, +)
}
sumRange(1..<11) // 55