0
我正在学习用Scala嵌套函数,在这里的定义是参考向前延伸的价值
object Main extends App {
val fac = (x: Int) => {
val factorial: (Int, Int) => Int = (x, accum) => if (x == 1) accum else factorial(x-1, accum*x)
factorial(x,1)
}
println(fac(3))
}
编译一些代码,我无法给出这样的错误:
forward reference extends over definition of value factorial
val factorial: (Int, Int) => Int = (x, accum) => if (x == 1) accum else factorial(x-1, accum*x)**
什么我做错了吗?
什么时候应该在方法上使用某个函数? – wannabe
方法可以是通用的,函数不能。方法可以有多个参数列表(或没有),函数总是只有一个。方法有名字,功能不要。方法可以有重复的参数,功能不能。方法可以有可选参数,功能不可以。方法可以有隐式参数列表,函数不能。所以,如果方法可以做很多功能不能做的事情,为什么你会想要使用一个函数呢?那么,有一件非常重要的事情:功能是对象,方法不是。而且由于Scala是面向对象的语言,你只能用对象做事情。你... –
...不能传递一个方法作为参数,你不能返回一个方法,你不能将一个方法分配给一个变量,你不能在数据结构中存储一个方法。你只能用对象来做到这一点。 –