【问题标题】:Order of array returned by mapmap 返回的数组顺序
【发布时间】:2015-07-11 15:11:52
【问题描述】:

这只是作为“我知道它是如何工作的,但不知道它应该是什么时刻”之一突然出现在我的脑海中。假设我有一个数组:

struct Person {
    var name : String
    var age : Int
}

var people = [Person]()
people.append(Person(name: "John", age: 24))
people.append(Person(name: "Mike", age: 21))
people.append(Person(name: "Emma", age: 23))

我想将people 映射到两个不同的数组,其中包含名称和年龄:

let names = people.map { $0.name }
let ages  = people.map { $0.age }

问题:

  1. 是否保证结果会按照原始数组的顺序,即names = ["John", "Mike", "Emma"]ages = [24, 21, 23]

  2. 如果第一个问题的答案是否定的,是否可以保证namesages 同步?

【问题讨论】:

  • @AntonBronnikov 你有这方面的参考吗?轶事证据是它们是按原始顺序排列的,但我不知道苹果将来是否会为map 实施并行版本,从而改变顺序。
  • 不,我没有参考资料(无法在 5 分钟内找到它)。这就是我在评论中回答的原因。我的想法是,Array采用SequenceType协议,其中有map(),这意味着映射将按照序列的顺序进行,如果是数组,则为数组的顺序。

标签: swift swift2


【解决方案1】:

是的,here's your source

“在将提供的闭包应用到每个数组元素后,map(_:) 方法返回一个包含所有新映射值的新数组,其顺序与原始数组中对应值的顺序相同。”

【讨论】:

    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多