Ich habe in letzter Zeit etwas Code von Java in Scala konvertiert, um mir die Sprache beizubringen.
Angenommen, wir diese scala Klasse haben:
class Person() {
var name:String = "joebob"
}
Jetzt möchte ich Zugang von Java so kann ich nicht Punkt-Notation, wie ich würde, wenn ich war in scala verwenden.
So kann ich meine var den Inhalt erhalten durch Ausgabe:
person = Person.new();
System.out.println(person.name());
und setzen Sie ihn über:
person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());
Dies gilt Ursache unserer Person Klasse wie dies in javap aussieht:
Compiled from "Person.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
public Person();
public void name_$eq(java.lang.String);
public java.lang.String name();
}
Ja, ich könnte meine eigenen Getter/Setter schreiben, aber ich hasse Klassen füllen damit und es macht nicht viel von Sinn, wenn ich bedenke, dass ich sie schon habe - ich möchte einfach die $ eq-Methode verbessern. (Dies wird tatsächlich schlimmer, wenn Sie mit Sachen wie antlr beschäftigen, denn dann müssen Sie es entkommen und es sieht aus wie person.name _ \ $ eq ("newname");
Hinweis: Ich hätte viel lieber meine Klassen mit mehr Setter-Methoden setzen mit dieser, anstatt füllen
Also, was Sie in dieser Situation tun würde