Umzug von Groovy nach Scala und bisher Scala lieben. Eines der Dinge, die ich an Groovy zutiefst vermisse, ist die Tatsache, dass ich Eigenschaften/Felder für Objekte definieren und sie dann ohne Getter aus anderen Klassen referenzieren kann.Zugriff auf Scala-Felder ohne Getter
Zum Beispiel in Java:
public class Fizz {
private String buzz;
public Fizz(String buzz) {
super();
setBuzz(buzz);
}
// Getters and setters for buzz
}
Aber in Groovy:
class Fizz {
String buzz
}
Dann könnte ich buzz
aus einer anderen Klasse verweisen etwa so:
void someMethod(Fizz fizz) {
if(fizz.buzz == "gnarly!") {
...
}
}
aber es scheint, dass Scala sich nicht so verhält, und du musst dich damit begnügen:
class Fizz(buzz : String) {
...
}
def someMethod(fizz : Fizz) : Unit = {
if(fizz.getBuzz.eq("gnarly!")) {
...
}
}
Zu meiner Scala-Code „grooviger“ (für diesen einen Anwendungsfall) machen Ich habe in einige meiner Scala Klassen über das Hinzufügen von „Helfer“ Methoden angesiedelt:
class Fizz(buzz : String) {
def buzz() : String = { this.buzz }
}
Welche ermöglicht jetzt mich auf sie zuzugreifen, wie so:
def someMethod(fizz : Fizz) : Unit = {
if(fizz.buzz.eq("gnarly!")) {
...
}
}
Meine Frage: Does Scala irgendwelche anderen Mechanismen/Geräte, die mir erlauben, die oben gewünschte Verhalten zu erreichen withou Ich muss meine sogenannten "Helfer-Methoden" schreiben?
Bitte lesen Sie über die Fallklassen in Scala –
Nicht sicher, warum dies abgelehnt wurde. Dies ist Thema, ist kein Betrogener (angesichts der Tatsache, dass ich Scala natürlich neu bin und vielleicht nicht über Dinge wie Fallklassen oder andere Konstrukte, die auf dieser Seite bereits angefragt wurden, weiß), zeigt Forschung und ist ein [ SSCCE] (http://sscce.org). – smeeb