在scala中,我们可以定义一个这样的类:
class x {
var a=10
a = a+1
}
a = a + 1是赋值操作,通常放在“函数”中。据我所知,“类”有点“类型”,这样的操作(放在一个类中)有一些特殊含义或具体用法?
谢谢!
答案 0 :(得分:3)
您可以将任何代码放在class
的声明块中。每次创建类的新实例时,此代码将执行一次。因此整个块相当于C
/ C++
中的构造函数。
但是在Scala中,在此构造函数中定义的符号成为类的成员,因此成员变量和方法在构造函数中声明为而不是在C
/中的外部C++
。当你第一次碰到它时,这看起来很奇怪,但它非常强大和简洁。
通常,构造函数用于创建成员值和方法
class x {
val value: Int = 42 // New member value
def addValue(i: Int) = i + value // New method
}
但它也可用于执行任意代码。
class x {
println("Initialising my class")
val value: Int = 42
startUpServers()
def addValue(i: Int) = i + value
{
val temp = 12 // NOT a member value
setTemperature(temp)
}
}
通常没有必要拥有var
个成员,但如果你必须拥有它们,那么可以在声明块内修改它们,如示例代码所示。
答案 1 :(得分:1)
在scala中,在定义类时会创建主构造函数。在您的代码中,var也在主构造函数中创建。 有关构造函数的更多信息: