我正在学习scala
我尝试了以下程序
package com.avdongre
object MyModule {
def abs(n: Int): Int =
if (n < 0) -n
else n
private def formatAbs(x: Int) = {
val msg = "The absolute value of %d is %d"
msg.format(x, abs(x))
}
def factorial(n: Int): Int = {
def go(n: Int, acc: Int): Int =
if (n <= 0) acc
else go(n - 1, n * acc)
go(n, 1)
}
def main(args: Array[String]): Unit =
println(formatAbs(-42))
println(factorial(5))
}
我得到以下输出
120
The absolute value of -42 is 42
为什么首先调用factorial
?
答案 0 :(得分:6)
你需要围绕main
身体的花括号:
def main(args: Array[String]): Unit = {
println(formatAbs(-42))
println(factorial(5))
}
发生的事情是你有这个(为了清楚起见,修正了缩进):
def main(args: Array[String]): Unit =
println(formatAbs(-42))
println(factorial(5))
因此,当对象MyModule
被初始化时,正文的最后一个语句是println(factorial(5))
,它出现在之前 main
方法。