gpt4 book ai didi

Scala 不可变变量和打印

转载 作者:行者123 更新时间:2023-12-04 22:50:22 25 4
gpt4 key购买 nike

目前正在学习一个我以前从未使用过的使用 Scala 的类(class),所以语法和它本身都是新的。

我正在研究一个简单的除法函数,但遇到了一些错误。

首先,我使用 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
}

关于Scala 不可变变量和打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com