Scala 部分应用递归函数
如何将foo编写为一个部分应用的函数,而不必在每次递归调用中传递名称,只需调用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(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
}