【发布时间】:2020-05-15 04:33:20
【问题描述】:
我是Scala的初学者,我尝试创建一个类并使用它,该类有变量(var)和一些处理(在def中)。我写的类如下;
class Example() {
var ExampleVar0 = 0
var ExampleVar1 = 0
def ExampleProcessing(_arg0: Int, _arg1: Int) : (Int, Int) = {
ExampleVar0 = _arg0 + 1
ExampleVar1 = _arg1 - 1
(ExampleVar0*2, ExampleVar1/2)
}
}
我想初始化ExampleVar* 并保留和更新该值。我在其他类中使用该类;
var result0
var result1
val exp = Example()
exp.ExampleProcessing(5, 6)(result0, result1)
result0 和 result1 都为零,var ExampleVar0 = 0 的语句似乎总是写为零。我检查了 var (println(exp.ExampleVar0.toString)) 的值,然后它总是为零。我可能对 var 的初始化有误解。
能否请您指出我的误解在哪里以及如何解决?
【问题讨论】:
-
它们是原始类型,并且您正在调用方法,需要将方法的结果分配回变量。除非并且直到您更新参考,否则它不会发生变异。
val (newResult0 , newResult1) = exp.ExampleProcessing(5, 6)(result0, result1) -
您永远不会分配给
result0或result1,因此它们将始终具有默认值。 -
在 Scala 中使用公共/类级别
var是一种不好的做法
标签: scala