在下面的代码中,过滤器代码被提取到本地val:
val filterFunc = (x:VO) => x.getVal().equalsIgnoreCase("45")
我可以将其传递给像这样的过滤函数:
.filter(filterFunc)
但是如果.filter函数在方法中并且过滤器是在方法之外定义的,我需要这样的东西:
def myMethod(p: A => Boolean) = {
.filter(p)
}
p: A => Boolean
是.filter
方法的方法签名的一部分。上面的代码无法编译,因为未设置类型A.如何更新代码,以便方法myMethod
接受过滤器定义作为其参数之一,然后在.filter
方法中运行此代码?
编辑:
当我做出改变时:
def myMethod[A](p: A => Boolean) = {
.filter(p)
}
我在第.filter(p)
行收到错误:
错误是:
type mismatch; found : A => Boolean required: VO => Boolean
答案 0 :(得分:0)
def myMethod [A](p:A =>布尔)
答案 1 :(得分:0)
正如评论中已经说过的那样:如果您知道正在运行过滤器的集合类型,为什么不将p类型定义为SomeKnownType => Boolean
?