swift – 高阶函数:“无法使用类型'((_) – > _)”的参数列表调用’map’

前端之家收集整理的这篇文章主要介绍了swift – 高阶函数:“无法使用类型'((_) – > _)”的参数列表调用’map’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用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更新

forEach添加到SequenceType,因此可用:

(cell.contentView.subviews as [UIView]).forEach { $0.removeFromSuperview() }

猜你在找的Swift相关文章