首页 > 解决方案 > 用地图重写 for in 0...n

问题描述

我有一个如下所示的快速代码

var items: [Item] = []
for i in 0...20 {
    items.append( makeItem(atIndex: i) )
}

是否可以像上面一样重写

var items: [Item] = [0...20].map {
   makeItem(atIndex: i)
}

标签: swiftloopsenumeration

解决方案


有可能,只是不要将范围包装在数组中,所以使用(0...20)而不是[0...20]

您甚至可以传递函数的名称,而不必通过一次调用来创建闭包。

let items = (0...20).map(makeItem)

推荐阅读