【问题标题】:Is there a way to instantly generate an array filled with a range of values in Swift?有没有办法在 Swift 中立即生成一个填充了一系列值的数组?
【发布时间】:2014-12-29 07:50:40
【问题描述】:

例如,在 python 中,我可以说类似

arr = range(0,30) 

并得到一个包含所述元素的数组。 我怀疑在 Swift 中使用下标可能会出现类似的情况,但是在搜索文档和 Apple 的 iBook 之后,我找不到用于生成所述数组的“包含电池”的解决方案。

这是我必须手动编写代码的东西,还是有预先编写的方法?

【问题讨论】:

    标签: arrays swift range


    【解决方案1】:

    您可以创建一个范围如下的数组:

    var values = Array(0...100)
    

    这会给你一个[0, ..., 100]的数组

    【讨论】:

      【解决方案2】:

      您可以创建一个范围并将其映射到一个数组中:

      var array = (0...30).map { $0 }
      

      map 闭包只返回范围元素,从而生成一个数组,其元素都是包含在范围内的整数。当然可以生成不同的元素和类型,例如:

      var array = (0...30).map { "Index\($0)" }
      

      生成字符串数组Index0Index1

      【讨论】:

        【解决方案3】:

        您可以使用它来创建包含相同值的数组

        let array = Array(count: 5, repeatedValue: 10)
        

        或者如果你想从范围创建一个数组,你可以这样做

        let array = [Int](1...10)
        

        在这种情况下,您将获得一个包含从 1 到 10 的 Int 值的数组

        【讨论】:

        • 在 Swift 3 中,我收到此语法错误。有什么变化吗?
        • Swift 4 语法:let array = Array(repeating: 10, count: 5)
        • 或在 Swift 4.2 中让 array = Array(repeatElement(10, count: 5))
        【解决方案4】:

        创建一个从 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))
        

        【讨论】:

          猜你喜欢
          • 2022-01-11
          • 2022-11-27
          • 2012-01-18
          • 1970-01-01
          • 1970-01-01
          • 2022-01-13
          • 2019-08-20
          • 2021-02-10
          • 1970-01-01
          相关资源
          最近更新 更多