目前我有这个矮胖的reduce功能......
blah: [String: Any] = queryItems.reduce([String: Any]()) {
(params: [String: Any], queryItem: URLQueryItem) in
var output = params
output[queryItem.name] = queryItem.value
return output
}
Run Code Online (Sandbox Code Playgroud)
我确信有一种更简单的方法可以做到这一点,但我无法理解它是如何工作的。
有一个更好的方法吗?
“更好”是指更干净、更短、更优雅等……
可以使用reduce(into:_:)代替reduce(_:_). 这既可params以为您节省行数和每次迭代复制的开销:
let blah: [String: Any] = (urlComponents.queryItems ?? []).reduce(into: [:]) {
params, queryItem in
params[queryItem.name] = queryItem.value
}
Run Code Online (Sandbox Code Playgroud)
reduce(_:_:)当结果是写时复制类型(例如数组或字典)时,此方法优于效率。
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |