在同一文件中获取以下类的编译时错误
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;
如果我使用私有变量问候语而不是构造函数
,则同样有效答案 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;
}
}