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() }

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...