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