在最近一次与一家知名软件公司的采访中,我被绊倒了,试图为看似平凡的Scala问题提供有效的解释。考虑以下:
case class Person(var age: Int)
def person = new Person(10)
person.age = 3
println(person)
这是
println
语句返回的内容:Person(10)
问题是为什么会这样?当我将
3
分配给person.age
时会发生什么?
最佳答案
好吧,
def person = new Person(10)
是一个功能。也就是说,每次调用
person
时,都会创建一个Person
的新实例。因此,如果我们内联函数,则您的代码将如下所示:Person(10).age = 3
println(Person(10))
如果要更改首先创建的人员实例的年龄,则需要捕获该实例。
val p = person
p.age = 3
println(p)
关于scala - 当我调用一个方法返回一个包含所述变量的案例类实例时,变量赋值会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540851/