【问题标题】:Mapping custom array in Swift在 Swift 中映射自定义数组
【发布时间】:2020-09-21 00:36:12
【问题描述】:

我有一个这样的数组:

let strNames = ["banana", "apple", "mango"]

我正在寻找这样的结果:

var abc = [Fruit(id: 0, name: "banana"), Fruit(id: 1, name: "apple"), Fruit(id: 2, name: "mango")]

到目前为止,我可以以经典的方式做到这一点。有人可以帮我用 Swift 方式映射吗?

var abc: [Fruit] = []
for i in 0..<strNames.count {
   abc.append(Fruit(id: i, name: strNames[i]))
}

【问题讨论】:

  • this 回答你的问题了吗?
  • 请包含Fruit

标签: swift


【解决方案1】:

使用这种语法,初始化器可以用作函数。

["banana", "apple", "mango"].enumerated().map(Fruit.init)

您的Fruit 类型似乎与EnumeratedSequence.Element 完全匹配。

struct Fruit {
  let id: Int
  let name: String
}

如果没有,您只需要创建自己的闭包即可。

["banana", "apple", "mango"].enumerated().map {
  Fruit(id: $0.offset, name: $0.element)
}

【讨论】:

    【解决方案2】:

    感谢@Sweeper 的建议。其实这就是我要找的……

    let abc: [Fruit] = strNames.enumerated().map { Fruit(id: $0, name: $1) }
    

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2023-04-07
      • 2020-04-23
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      相关资源
      最近更新 更多