我们可以在scala类声明中添加什么?

时间:2018-06-13 08:13:04

标签: scala

在scala中,我们可以定义一个这样的类:

class x {
     var a=10
     a = a+1
}

a = a + 1是赋值操作,通常放在“函数”中。据我所知,“类”有点“类型”,这样的操作(放在一个类中)有一些特殊含义或具体用法?

谢谢!

2 个答案:

答案 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也在主构造函数中创建。 有关构造函数的更多信息:

https://alvinalexander.com/scala/how-to-create-multiple-class-constructors-in-scala-alternate-constructors