我想使用swift高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews。这条线
(cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() }
导致错误 “无法使用'((_) - > _)'”
类型的参数列表调用'map'我想知道编译器在这一点上需要什么。
答案 0 :(得分:22)
我会说地图不适合这种操作。它基于其他序列元素创建一个新序列,但是你不想创建一个序列,你只想迭代它们并将一个函数应用于它们。在swift中没有符合你想要的高阶函数,我希望他们能尽快投入一些东西。因此,您可以做的最好的事情是使用for循环或编写您自己的函数,它可以满足您的需求。
我想建议你自己写一个功能(基于foreach的scalas):
extension Array {
func foreach(function: T -> ()) {
for elem in self {
function(elem)
}
}
}
使用Swift 2.0更新
forEach
已添加到SequenceType
,因此可以使用:
(cell.contentView.subviews as [UIView]).forEach { $0.removeFromSuperview() }