Scala不可变变量和打印
发布时间:2020-12-16 18:19:48 所属栏目:安全 来源:网络整理
导读:目前正在使用一个我以前从未使用过 Scala的类,所以语法和本身都是新的. 我正在研究一个简单的除法函数,但遇到了一些错误. 首先,我使用var sub = m对吗?在我的代码中,我只想做m = m-n,但是你不能改变变量,我不确定最好的选择是什么. 然后我唯一的另一个问题
目前正在使用一个我以前从未使用过
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函数),编译器很困惑.
您可以通过在函数中的任何位置声明返回x来显式返回值,或者可以将x作为函数中的最后一个语句(或该函数中的一个特定执行路径).例如: def what(b:Boolean):Int = { if(b) 1 else 0 } (Scala会允许我写def什么(b:布尔)= 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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |