Naive Frage, glaube ich, aber alles, was ich finde, ruft nur andere Konstruktoren von Konstruktoren auf. Ich muss eine Methode aufrufen. Meine Klasse (Anfang):
%Vor%Ich möchte also einen Konstruktor mit einem einzelnen Argument haben und in einem solchen Konstruktor eine Methode moveNext aufrufen. Das ist alles.
Wenn ich den Code kompiliere, bekomme ich einen Fehler:
error: Abstraktes Mitglied darf keinen privaten Modifikator haben
private var had_next: Boolesch;
und dasselbe für value .
Ich habe es geändert zu:
%Vor%Aber jetzt bekomme ich einen Fehler bei "iter = it":
Fehler: 'Dies' erwartet, aber Identifikator gefunden.
iter = es;
Wie schreibt man einen solchen Konstruktor in Scala?
Das erste Problem besteht darin, dass Ihre Definitionen von had_next
und value
abstrakt sind: Diese Elemente haben keine rechte Seite.
Versuchen Sie stattdessen:
%Vor% Hier bedeutet _
"nicht initialisierter Standardwert". Zum Beispiel funktioniert das Folgende für mich in der Konsole:
Das zweite Problem ("'this' expected ...") kommt daher, dass Hilfskonstruktoren in Scala immer einen anderen Konstruktor als erste Anweisung aufrufen müssen. So könnte Ihr Konstruktor beispielsweise mit this()
beginnen. Weitere Informationen finden Sie in Abschnitt 6.7 in Programmierung in Scala .
Der Standardkonstruktor ist derjenige, den Sie definieren, wenn Sie Ihre Klasse deklarieren
Beispiel:
%Vor%Sie können den Standardkonstruktor auch so definieren, dass er keine Parameter wie in Ihrem Code akzeptiert
%Vor%Dann können Sie zusätzliche Konstruktoren hinzufügen. Alle Konstruktoren, die Sie der Klasse hinzufügen, müssen einen anderen Konstruktor als erste Anweisung des Konstruktors aufrufen. Wenn Sie nicht angeben, dass Sie das "Dies erwartet, aber die Kennung gefunden" erhalten haben.
Sehen wir uns ein Beispiel an:
%Vor%Im obigen Code new classconstructor () tut nichts, weil der leere Konstruktor keinen Rumpf hat. und new classconstructor (200) führt den leeren Konstruktor und den neuen Konstruktor aus, in dem Sie zusätzlichen Code hinzufügen können, z. B. einen Aufruf der moveNext () -Methode. In diesem Fall druckt dieser 200 auf die Konsole.
Tags und Links scala constructor method-call