scala - 当我调用一个方法返回一个包含所述变量的案例类实例时,变量赋值会怎样?

标签 scala oop functional-programming

在最近一次与一家知名软件公司的采访中,我被绊倒了,试图为看似平凡的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/

相关文章:

scala - 如何在Slick2.0中使用DateTime?

c# - 解决错误 'there is no argument given that corresponds to required formal parameter' ?

java - 使用没有接口(interface)的适配器模式?

java - 'download' 功能应该封装在对象中还是其他地方?

scala - 为什么 print() 有副作用?

node.js - 带有 ramda 和 ramda-fantasy 的 Monadic IO

scala - 无法使用 :cp command 将 jar 添加到 Scala repl

java - Spark-csv 的 Spark-Submit 依赖关系解析

Scala:在一次操作中进行过滤和转换

c++ - 未命名的命名空间和 iostream 导致 "!= being illegal operation"