【发布时间】:2018-02-23 03:02:38
【问题描述】:
这可能是一个非常基本的问题。我是 Scala 的新手。在 Scala 中,我有一个函数,其第二个参数具有默认参数值:
def fun(number : Int, defaultNumber : Int = 0): Int = {number + defaultNumber}
我想要一个 highOrder 函数,我可以向它传递一个 lowerOrder 函数,例如上面的函数,它的第二个参数具有默认值。第一次尝试如下:
def higherOrder(lowerOrder : (Int, Int) => Int, number: Int) =
{lowerOrder(number)}
这显然会报错:
错误:方法应用的参数不足:(v1: Int, v2: Int)Int in trait Function2。 未指定值参数 v2.
解决这个问题的一种方法是在 highOrder 函数中获取默认值:
def higherOrder(lowerOrder : (Int, Int) => Int, number: Int, defaultNumber: Int = 0) =
{lowerOrder(number, defaultNumber)}
但我不想这样做,因为我可能想要传递不同的 lowerOrder 函数,它们的第二个参数具有不同的默认值,并且我可能不知道将默认值传递给 higherOrder 函数的默认值是什么。有什么解决办法吗?
【问题讨论】:
标签: scala