Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala-我可以重载咖喱方法吗?_Scala - Fatal编程技术网

scala-我可以重载咖喱方法吗?

scala-我可以重载咖喱方法吗?,scala,Scala,有没有办法在Scala中重载采用多个参数列表的方法?例如,我想这样做: def foo(a: Int)(b: Int)(c: Int): Int def foo(a: Int)(b: Int): Int 我可以这样定义它,但尝试调用第二个方法,如下所示: foo(1)(1) 使编译器抱怨“对重载定义的引用不明确”,这似乎是合理的。有没有办法做到这一点?例如,在某些情况下,最后一个参数可能被认为是可选的。您不能对此使用重载,因为由于使用curry,将有两个foo方法仅在返回类型上有所不同 您

有没有办法在Scala中重载采用多个参数列表的方法?例如,我想这样做:

def foo(a: Int)(b: Int)(c: Int): Int

def foo(a: Int)(b: Int): Int
我可以这样定义它,但尝试调用第二个方法,如下所示:

foo(1)(1)

使编译器抱怨“对重载定义的引用不明确”,这似乎是合理的。有没有办法做到这一点?例如,在某些情况下,最后一个参数可能被认为是可选的。

您不能对此使用重载,因为由于使用curry,将有两个
foo
方法仅在返回类型上有所不同

您可以使用Scala2.8来近似此值,但必须将此方法调用为
foo(1)(1)(
)。例如:

object Hello {
  def foo(a : String = "Hello,") : String = a

  def main(args: Array[String]) {
    println(foo() + foo(" world!"))
  }
}