作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
_)' "-6ren"> _)' "-我想使用快速的高阶函数(映射)从给定的 UIView.subviews 数组中删除所有 subview 。线路 (cell.contentView.subviews as [UIView]).map -6ren">
我想使用快速的高阶函数(映射)从给定的 UIView.subviews 数组中删除所有 subview 。线路
(cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() }
导致错误“无法使用类型为‘((_) -> _)’的参数列表调用‘map’”
此时我想知道编译器需要我做什么。
最佳答案
我会说 map 不适合这种操作。它基于其他序列元素创建一个新序列,但您不想创建一个序列,您只想遍历它们并对它们应用一个函数。在 swift 中,没有满足您需求的高阶函数,我希望他们能尽快加入一些东西。因此,您最好的办法是使用 for 循环或编写自己的函数来执行您想要的操作。
我想建议编写您自己的函数(基于什么是 scalas foreach):
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 - 高阶函数 : "Cannot invoke ' map' with an argument list of type '((_) -> _)' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659616/
我是一名优秀的程序员,十分优秀!