当前位置: 首页 > 面试题库 >

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

贝浩歌
2023-03-14
问题内容

我想使用快速的高阶函数(map)从给定的UIView.subviews数组中删除所有Subviews。线

(cell.contentView.subviews as [UIView]).map { $0.removeFromSuperView() }

导致错误“无法使用类型’(()-> )’的参数列表调用’map’”

我现在想知道编译器需要我什么。


问题答案:

我会说地图不适合这种操作。它基于其他sequence元素创建了一个新序列,但是您不想创建一个序列,而只想遍历它们并将一个函数应用于它们。暂时没有与您想要的功能匹配的高阶函数,我希望他们会尽快投入使用。因此,您最好的办法是使用for循环或编写自己想要的功能。

我想建议您编写自己的functon(基于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() }


 类似资料:
  • 问题内容: 听起来很荒谬,但是我无法修复这段代码: 无论我如何写闭包,我总是会遇到此错误: 无法使用类型为’ ‘ 的参数列表调用’filter ‘ 定义如下: 并且是Swift类(不继承自NSObject) 我在许多其他地方都使用了几乎相同的产品,而没有出现问题。有什么建议? 问题答案: 如果您不符合以下条件,则会收到该错误:

  • 问题内容: 当我编写代码以使用indexOf从数组中查找项目时,它向我显示了上述错误。这是我的代码:- 问题答案: 为了使用的,必须采取Equatable协议。只有采用此协议,列表才能将一个项目与其他项目进行比较以找到所需的索引

  • 我刚刚迁移到Xcode7/IOS9,我的部分代码不兼容。 我从Xcode得到以下错误: “ 不能使用类型为”(字符串)“的参数列表调用”计数“” 这是我的代码:

  • 我是java / kotlin函数式编程的新手,并做了一些练习。只是想知道如何在调用它时传递lambda的参数。例如,在这里调用一些方法,我需要传递一个Int参数。 如何做到这一点?答案可能非常简单,我只是没有在任何地方找到它,在文档中只有列表的例子,在这种情况下答案是清楚的:

  • 使用新的Swift 1.2更新到Xcode 6.3.1,旧方法更改为,但是当我切换到使用时,它总是抛出此错误消息: 无法使用类型为“(String)”的参数列表调用“count” 这个片段是我从Apple doc复制过来的,但是还是不行。

  • 自从我升级到Xcode 7测试版后,我有一个无法修复的错误。这是我的DataManager.swift的完整代码 因此,我得到了以下错误:“无法使用类型为”(NSURL,completionHandler:(NSData!,NSURLResponse!,NSError!)的参数列表调用“dataTaskWithURL”-