访问配套对象

时间:2016-11-12 23:40:13

标签: scala

在同一文件中获取以下类的编译时错误

class FancyGreeting (greeting: String) {
    //private var  greeting: String=_;

    def greet() = {
        println( "greeting in class" + greeting)
    }
}

object FancyGreeting {

    def privateGreeting(f:FancyGreeting) : String = {
        f.greeting;
    }
}

错误:值问候语不是this.FancyGreeting的成员     f.greeting;

如果我使用私有变量问候语而不是构造函数

,则同样有效

2 个答案:

答案 0 :(得分:1)

如果您想要使用与您注释掉的行相同的行为,则应编写class FancyGreeting(private var greeting: String) {。你编写它的方式(即class FancyGreeting(greeting: String) {)只是将greeting作为参数给构造函数,而不是将它作为属性。

这就是说,你不应该使用“;”结束Scala中的行。此外,如果可以的话,通常最好使用val而不是var

注意:this answer可能对您有用。

答案 1 :(得分:0)

您需要将构造函数参数表示为变量,如下所示:

class FancyGreeting (val greeting: String) {
    //private var  greeting: String=_;

    def greet() = {
        println( "greeting in class" + greeting)
    }
}

object FancyGreeting {

    def privateGreeting(f:FancyGreeting) : String = {
        f.greeting;
    }
}