有没有更快/更好的方法来在Swift中进行这个简单的迭代?
for node in nodes{
names.append(node.name)
}
我刚刚写了这段代码,感觉就像我在用缓慢/菜鸟的方式做这件事,想想我到目前为止在 Python 和 Swift 方面的经验,只是觉得我应该问一下。
回答
您没有显示names. 我假设您的代码如下所示:
var names: [String] = []
for node in nodes {
names.append(node.name)
}
如果是这样,你可以这样写:
let names = nodes.map { $0.name }
或者像这样:
let names = nodes.map(.name)
另一方面,如果names可能已经包含一些您想要保留的值,您可以这样做:
names.append(contentsOf: nodes.lazy.map(.name)
使用.lazyhere 可以防止 Swift 创建一个临时数组来保存新名称。