【发布时间】:2014-12-29 07:50:40
【问题描述】:
例如,在 python 中,我可以说类似
arr = range(0,30)
并得到一个包含所述元素的数组。 我怀疑在 Swift 中使用下标可能会出现类似的情况,但是在搜索文档和 Apple 的 iBook 之后,我找不到用于生成所述数组的“包含电池”的解决方案。
这是我必须手动编写代码的东西,还是有预先编写的方法?
【问题讨论】:
例如,在 python 中,我可以说类似
arr = range(0,30)
并得到一个包含所述元素的数组。 我怀疑在 Swift 中使用下标可能会出现类似的情况,但是在搜索文档和 Apple 的 iBook 之后,我找不到用于生成所述数组的“包含电池”的解决方案。
这是我必须手动编写代码的东西,还是有预先编写的方法?
【问题讨论】:
您可以创建一个范围如下的数组:
var values = Array(0...100)
这会给你一个[0, ..., 100]的数组
【讨论】:
您可以创建一个范围并将其映射到一个数组中:
var array = (0...30).map { $0 }
map 闭包只返回范围元素,从而生成一个数组,其元素都是包含在范围内的整数。当然可以生成不同的元素和类型,例如:
var array = (0...30).map { "Index\($0)" }
生成字符串数组Index0、Index1等
【讨论】:
您可以使用它来创建包含相同值的数组
let array = Array(count: 5, repeatedValue: 10)
或者如果你想从范围创建一个数组,你可以这样做
let array = [Int](1...10)
在这种情况下,您将获得一个包含从 1 到 10 的 Int 值的数组
【讨论】:
创建一个从 0 到 N-1 的 Int 数组
var arr = [Int](0..<N)
创建一个从 0 到 N-1 的浮点数组
var arr = (0..<N).map{ Float($0) }
创建一个从 0 到 2π 的浮点数组,包括 2π 步长 0.1
var arr:[Float] = stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1).map{$0}
or
var arr:[Float] = Array(stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1))
【讨论】: