Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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_Recursion_Partial Application - Fatal编程技术网

Scala 部分应用递归函数

Scala 部分应用递归函数,scala,recursion,partial-application,Scala,Recursion,Partial Application,如何将foo编写为一个部分应用的函数,而不必在每次递归调用中传递名称,只需调用foo(map1)?两个选项: def mainCaller() = { val name = "xyz" someList.foreach { u:Map => foo(name, u) } } def foo(name:String)(map:Map): Unit = { //match case.... //recursive call to foo in each case where

如何将foo编写为一个部分应用的函数,而不必在每次递归调用中传递名称,只需调用
foo(map1)

两个选项:

def mainCaller() = { 
  val name = "xyz"
  someList.foreach { u:Map => foo(name, u) }
}

def foo(name:String)(map:Map): Unit = {
  //match case....
  //recursive call to foo in each case where name remains same, but map changes
}
或:


简直太棒了!!这两者有什么优点和缺点吗。第一种方法看起来更干净。@scout:我想不出有什么好处。顺便说一句,我犯了一个错误。在第一个示例中,它需要在
foo(name)
之后加下划线。
def foo(name:String)(map:Map): Unit = {
    val bar = foo(name)_
    //match case...
    // case 1:
    bar(x)

    // case 2:
    bar(y)
}
def foo(name:String): Map => Unit = {
    def bar(map: Map): Unit = {
        //match case...
        // case 1:
        bar(x)

        // case 2:
        bar(y)
    }
    bar
}