我开始通过编写简单的代码来学习scala。
我对下面代码的行为感到有些困惑。
class BasicUsage {
private val incr = (x: Int) =>
{
println("incr invoked")
x + 1
}
private val add = (x: Int, y: Int) =>
{
println("add invoked")
if (x == 0 || y == 0) {
0
} else {
x + y
}
}
def testFuns(): Unit =
println(add(1,2))
println(incr(5))
}
调用testFuns()时,输出如下,
incr invoked
6
添加已调用的
3
根据我的理解,首先应调用函数add(),然后调用incr()。
上述代码中的错误是什么? 我是否误解了函数和方法的用法?
非常感谢,
答案 0 :(得分:4)
您在testFuns方法中缺少大括号:
def testFuns(): Unit =
println(add(1,2))
println(incr(5))
这意味着testFuns()只包含一个第一个语句:println(add(1,2))。第二个语句属于类,并在BasicUsage实例化后执行。要解决它:
def testFuns(): Unit = {
println(add(1,2))
println(incr(5))
}