加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

数组 – 在Swift中重复数组

发布时间:2020-12-14 04:29:32 所属栏目:百科 来源:网络整理
导读:在 Python中,我可以创建一个这样的重复列表: [1,2,3]*3[1,3,1,3] 在Swift中有一个简洁的方法吗? 我能做的最好的事情是: 1 var r = [Int]()r: [Int] = 0 values 2 for i in 1...3 { 3. r += [1,3] 4. } 5 print(r)[1,3] 解决方法 您可以创建一个2D数组,然
在 Python中,我可以创建一个这样的重复列表:

>>> [1,2,3]*3
[1,3,1,3]

在Swift中有一个简洁的方法吗?

我能做的最好的事情是:

1> var r = [Int]()
r: [Int] = 0 values
  2> for i in 1...3 { 
  3.     r += [1,3]
  4. }
  5> print(r)
[1,3]

解决方法

您可以创建一个2D数组,然后使用flatMap将其转换为一维数组:

let array = [Int](repeating: [1,3],count: 3).flatMap{$0}

这是一个扩展,它添加了一个init方法和一个重复方法,该方法采用一个使得它更清洁的数组:

extension Array {
  init(repeating: [Element],count: Int) {
    self.init([[Element]](repeating: repeating,count: count).flatMap{$0})
  }

  func repeated(count: Int) -> [Element] {
    return [Element](repeating: self,count: count)
  }
}

let array = [1,3].repeated(count: 3) // => [1,3]

请注意,使用新的初始化程序,如果在不提供预期类型的??情况下使用它,则可以获得模糊的方法调用:

let array = Array(repeating: [1,count: 3) // Error: Ambiguous use of ?init(repeating:count:)?

改为使用:

let array = [Int](repeating: [1,count: 3) // => [1,3]

要么

let array:[Int] = Array(repeating: [1,3]

如果将方法签名更改为init(repeatingContentsOf:[Element],count:Int)或类似方法,则可以避免这种歧义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读