微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐