Swift 使用reduce将struct的属性追加到数组
我有一系列的物品Swift 使用reduce将struct的属性追加到数组,swift,Swift,我有一系列的物品 struct Item { var id: String } 如何使用reduce函数将所有ID追加到一个数组中 我尝试的是: self.items.reduce([String](), { $0.0.append($0.1.id)}) 但编译器显示了一个错误: 上下文闭包类型“([Item])->”需要2个参数,但闭包正文中使用了1个参数 试试这个: items.reduce([String](), { res, item in var arr = res
struct Item {
var id: String
}
如何使用reduce函数将所有ID追加到一个数组中
我尝试的是:
self.items.reduce([String](), { $0.0.append($0.1.id)})
但编译器显示了一个错误:
上下文闭包类型“([Item])->”需要2个参数,但闭包正文中使用了1个参数
试试这个:
items.reduce([String](), { res, item in
var arr = res
arr.append(item.id)
return arr
})
你的意思可能是
map
而不是reduce
let ids = items.map{ $0.id }
如果您想使用reduce,下面是Swift 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"]
有两个问题:
let reduceResult = items.map { $0.id }
错误:“[Item]”类型的值没有成员“id”。抱歉,已更新。。。正如@vadian所说,您可能真的想使用
map
。