目前正在学习一个使用 Scala 的课程,我以前从未使用过它,因此语法和本身都是新的。
我正在研究一个简单的除法函数,但遇到了一些错误。
首先,我使用 var sub=m 对吗?在我的代码中,我只是想做 m = m-n 但你无法更改变量,而且我不确定最好的选择是什么。
然后我唯一的另一个问题是编译器对我的打印行咆哮。
<console>:14: error: reassignment to val
m = m-n
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
<console>:16: error: type mismatch;
found : Unit
required: Int
println(x)
/////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////
def div(m: Int, n: Int): Int = {
var x = 0
var sub = m
if (n > m)
print("Can't perform that.")
while (sub >= n) {
x+=1
sub = sub-n
}
println(x)
}
问题实际上是你的返回值。你宣布div
返回一个Int
并且编译器(在您的情况下)假设您的最后一条语句是您的返回值。自从println
回报Unit
(它是void
函数),编译器会感到困惑。
您可以通过说显式返回一个值return x
你的函数中的任何地方,或者你可以把x
作为函数中的最后一个语句(或该函数中的一个特定执行路径)。例如:
def what(b:Boolean):Int = {
if(b) 1
else 0
}
(Scala 允许我写def what(b:Boolean) = if(b) 1 else 0
它与上面的函数完全相同,但这不是重点。)
为了方便起见,这是经过我描述的修改后的函数:
def div(m: Int, n: Int): Int = {
var x = 0
var sub = m
if (n > m)
print("Can't perform that.")
while (sub >= n) {
x+=1
sub = sub-n
}
println(x)
x // <--- return value
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)