加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:47:14 所属栏目:百科 来源:网络整理
导读:我想使用swift高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews.这条线 (cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() } 导致错误 “无法使用'((_) – _)”类型的参数列表调用’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() }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读