追加属性降低
问题描述:
我有一个项目追加属性降低
struct Item {
var id: String
}
我如何可以追加所有的IDS使用减少功能的数组的数组?
我尝试:
self.items.reduce([String](), { $0.0.append($0.1.id)})
但是编译显示了一个错误:
Contextual closure type '(_, [Item]) -> _' expects 2 arguments, but 1 was used in closure body
答
如果你想这样做与减少,这里是斯威夫特3段和4:
struct Item {
var id: String
}
var items = [Item(id: "text1"), Item(id: "text2")]
let reduceResult = items.reduce([String](), { $0 + [$1.id] })
reduceResult // ["text1", "text2"]
有2个问题:
- 减少是给你2个参数,不有2个值
- 不能编辑传递给你块参数单个元组,你必须返回新对象
但在这种情况下,最好的解决办法是使用地图:
let reduceResult = items.map { $0.id }
答
试试这个:
items.reduce([String](), { res, item in
var arr = res
arr.append(item.id)
return arr
})
答
你大概的意思map
而不是reduce
let ids = items.map{ $0.id }
错误:类型为“[项目]”没有成员“id”值 –
对不起,更新......至于@vadian虽然说,你可能真的想使用'map'。 – paulvs