建议一种解除这些功能的方法

时间:2013-06-25 15:37:18

标签: scala

你能提出解除这两项功能的方法吗?谢谢!

def maxY(f: (Int, Int) => Int, z: Int) = (0 to z).filter(f(0, _) <= z).max
def maxX(f: (Int, Int) => Int, z: Int) = (0 to z).filter(f(_, 0) <= z).max

1 个答案:

答案 0 :(得分:0)

您可以将函数转换为部分应用函数,然后使用元组而不是参数列表:

def maxWithTuple(buildTuple: Int => (Int, Int), f: (Int, Int) => Int, z: Int) = 
  (0 to z).filter(i => (f _).tupled(buildTuple(i)) <= z).max

当然这不是您正在寻找的解决方案,但演示了如何分离参数构建和函数调用。

buildTuple是构造用作参数列表

的元组的方法