gpt4 book ai didi

scala - 使用 val 声明的主构造函数参数允许更改值

转载 作者:行者123 更新时间:2023-12-04 05:41:14 25 4
gpt4 key购买 nike

如下所示,主构造函数中的代码参数使用默认值定义,val 意味着这些参数的值不应更改。但是仍然为什么在初始化构造函数时值会发生变化

//Why values of Aname and Cname is getting overwritten      
class GFG(val Aname: String = "Ank", val Cname: String = "Constructors") {
def display() = {
println("Author name: " + Aname)
println("Chapter name: " + Cname)

}
}
//object main
object Main {
def main(args: Array[String]) = {
var obj = new GFG("a", "b")
obj.display()
}
}

最佳答案

class GFG(val Aname: String = "Ank", val Cname: String = "Constructors")

您正在创建一个带有默认参数的构造函数的类。仅当您未明确提供这些值时才会使用这些值。这意味着您可以:

new GFG("a", "b") //both parameters provided, no default values are used -> GFG(a,b)

new GFG("a") //only first parameter provided, second default value is used -> GFG(a,Constructors)

new GFG() // no parameters provided explicitly, only default values are used -> GFG(Ank,Constructors)

如您所见,您不能为 Aname 使用默认值,但为 Cname 使用显式值,但如果您使用命名参数,则可以:

new GFG(Cname = "b") // GFG(Ank, b)

关于scala - 使用 val 声明的主构造函数参数允许更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934041/

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