我想做这样的事情:
(xs: Vector[Int], method:(Vector[Int] => Int)) =
selector match {
case Case1 => (<compute xs>, <the max method of Vector>)
case Case2 => (<compute xs>, <the min method of Vector>)
}
xs.method
它可以做到这一点:
(xs: Vector[Int], fn:(Vector[Int] => Int)) =
selector match {
case Case1 => (<compute xs>, (xs: Vector[Int]) => xs.max)
case Case2 => (<compute xs>, (xs: Vector[Int]) => xs.min)
}
fn(xs)
有没有办法在方法级别更直接地说出这样的内容?
感谢。
答案 0 :(得分:0)
您需要创建一个简单地在输入向量上调用所需方法的lambda。您不必更改您将使用它的功能中的任何内容。即:
def foo(vec: Vector[Int], f: Vector[Int] => Int) = {
???
f(vec)
}
// using it:
foo( vec, _.max )
foo( vec, _.min )
仅供参考_.max
是(x) => x.max
的糖。