如何使用过滤器函数作为方法参数

时间:2013-04-30 14:50:00

标签: scala

在下面的代码中,过滤器代码被提取到本地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

2 个答案:

答案 0 :(得分:0)

def myMethod [A](p:A =>布尔)

答案 1 :(得分:0)

正如评论中已经说过的那样:如果您知道正在运行过滤器的集合类型,为什么不将p类型定义为SomeKnownType => Boolean