gpt4 book ai didi

scala - 在 scala 中使用 def、val 和 var

转载 作者:行者123 更新时间:2023-12-03 03:36:03 25 4
gpt4 key购买 nike

class Person(val name:String,var age:Int )
def person = new Person("Kumar",12)
person.age = 20
println(person.age)

这些代码行输出 12,即使 person.age=20 已成功执行。我发现发生这种情况是因为我在 def person = new Person("Kumar",12) 中使用了 def 。如果我使用 var 或 val,输出为 20。我知道scala中的默认值是val。这:

def age = 30
age = 45

...给出编译错误,因为它默认是 val。为什么上面的第一组行不能正常工作,但也不会出错?

最佳答案

Scala 中有三种定义事物的方法:

  • def 定义一个方法
  • val 定义固定(无法修改)
  • var 定义一个变量(可以修改)

查看您的代码:

def person = new Person("Kumar",12)

这定义了一个名为person的新方法。您只能在没有 () 的情况下调用此方法,因为它被定义为无参数方法。对于空括号方法,您可以使用或不使用“()”来调用它。如果你简单地写:

person

那么你正在调用这个方法(如果你不指定返回值,它就会被丢弃)。在这行代码中:

person.age = 20

发生的情况是,您首先调用 person 方法,并在返回值(Person 类的实例)上更改 age成员变量。

最后一行:

println(person.age)

在这里,您再次调用 person 方法,该方法返回 Person 类的新实例(age 设置为 12)。与此相同:

println(person().age)

关于scala - 在 scala 中使用 def、val 和 var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com