我想使用快速的高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews。线
(cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() }
导致错误“无法使用类型’(()-> )’的参数列表调用’map’”
我现在想知道编译器需要我什么。
我会说地图不适合这种操作。它基于其他sequence元素创建了一个新序列,但是您不想创建一个序列,而只想遍历它们并将一个函数应用于它们。暂时没有与您想要的功能匹配的高阶函数,我希望他们会尽快投入使用。因此,您最好的办法是使用for循环或编写自己想要的功能。
我想建议您编写自己的functon(基于foreach的标量):
extension Array { func foreach(function: T -> ()) { for elem in self { function(elem) } } }
使用Swift 2.0更新
forEach已添加到中SequenceType,因此可用:
forEach
SequenceType
(cell.contentView.subviews as [UIView]).forEach { $0.removeFromSuperview() }