2016-11-12 4 views
3

eine Kompilierung Fehler beim Abruf für die folgenden Klassen in der gleichen DateiZugriff Konstruktor Variable in Begleitobjekt

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

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

object FancyGreeting { 

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

Fehler: Wert Gruß ist kein Mitglied von this.FancyGreeting f.greeting;

Das gleiche funktioniert, wenn ich verwenden, um die private Variable Gruß anstelle des Konstrukteurs

+0

Statt auf beiden Antworten danken kommentieren, sollten Sie die eine Validierung, die am besten die Beantwortung Ihrer Frage. Auf diese Weise wird die Frage geschlossen. Sie können auch über beide abstimmen, wenn sie geholfen haben. – JonesV

Antwort

1

Sie class FancyGreeting(private var greeting: String) { schreiben sollten, wenn Sie das gleiche Verhalten wie, wenn Sie die Zeile, die Sie heraus kommentiert haben wollen. Die Art, wie Sie es schreiben (d. H. class FancyGreeting(greeting: String) {) gibt nur greeting als Parameter an den Konstruktor, ohne es zu einer Eigenschaft zu machen.

Dies gesagt, sollten Sie nicht verwenden ";" um die Linien in Scala zu beenden. Darüber hinaus ist es normalerweise besser, val als var zu verwenden, wenn Sie können.

HINWEIS: this answer könnte für Sie interessant sein.

+0

danke. macht Sinn – Shamsur

0

Sie müssen den Konstruktor Parameter als Variable bezeichnen, etwa so:

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; 
    } 
} 
+0

danke das hat geholfen – Shamsur

Verwandte Themen