如果可能的话,我对过滤功能的以下修改感兴趣:
case class People(val age: Int) val a: List[People] = ... a.filter(i => i.age ==10 )
或更简单:
a.filter(_.age==10 )
我可以用任何简单的方法定义另一个修改后的过滤器,其工作方式如下(无下划线)
a.myfilter1( age==10 )
filter
函数的参数不是布尔值时,它不起作用。假设我想创建一个修改过的过滤器,当给出非布尔值时,它会自动转换为相等。这是一个例子:val anotherPerson: People = ... a.myFilter2(anotherPerson)
我希望上面的myFilter2
翻译成以下内容:
a.filter(_.equals(anotherPerson))
答案 0 :(得分:1)
使用隐式def:
case class MyFilterable[T](seq: Seq[T]) {
def suchAFilter(v: Any): Seq[T] = {
seq.filter(v.equals)
}
}
implicit def strongFilter[T](seq: Seq[T]): MyFilterable[T] = {
MyFilterable(seq)
}
println(List(1,2,3).suchAFilter(2))