swift - 用地图重写 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)
}
解决方案
有可能,只是不要将范围包装在数组中,所以使用(0...20)
而不是[0...20]
您甚至可以传递函数的名称,而不必通过一次调用来创建闭包。
let items = (0...20).map(makeItem)
推荐阅读
- r - 使用 map 和 dplyr 分解时间序列
- sql-server - 有没有办法在 t-sql 脚本中切换服务器上下文?
- python - 我必须转换列才能在 sqlite3 中正确使用它们的问题
- ruby-on-rails - 在创建评论时,无缘无故地获得“多次调用渲染和/或重定向”
- python - 如何使用random.choice 和alternation 循环?
- javascript - 插入 json 对象数组
- javascript - 在 javascript Rock, Paper, Scissors Game 中记分有问题
- python - 如何通过 pyserial 与 24 字节的 Vacom VAX 控制器通信?
- python - python中的扑克手评估:为什么naive比bit hash快?
- apache-spark - spark 1.6 任务永无止境