Scala:类中var的初始化

Scala:类中var的初始化,scala,Scala,我是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

我是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的语句用零写入。我检查了变量printlnexp.ExampleVar0.toString的值,然后它始终为零。我可能误解了var的初始化

您能指出我的误解在哪里以及如何解决它吗?

您似乎使用result0和result1作为方法参数,这看起来不正确。试试这个:

val exp = Example()
val (result0, result1) = exp.ExampleProcessing(5, 6)

在这种情况下,var似乎不相关或不必要,但我将给出通常的警告,最好避免使用var并使用不可变的数据结构。

它们是基本类型,并且您正在调用一个方法,该方法的结果需要分配回变量。除非更新引用,否则它不会发生变异。val newResult0,newResult1=exp.ExampleProcessing5,6result0,result1您从未分配给result0或result1,因此它们将始终具有默认值。在Scala中使用公共/类级别的变量是一种不好的做法