Geben Sie eine sichere Methodenverkettung ein, die keine Wiederholungen von Vorgängen zulässt

Ich möchte Methodenverkettung wie in den folgenden Fragen implementieren:

Bewährte Methode zur Implementierung des Scala-Merkmals, das die Verkettung von Methoden unterstützt ;

Scala DSL: Methodenverkettung mit parameterlosen Methoden

Ich möchte jedoch, dass eine einmal verwendete "Eigenschaft" nicht mehr verwendet werden kann. Nehmen wir zum Beispiel an, ich habe eine Klasse "Myclass", für die ich die Verwendung der Definitionen "foo" und "bar" höchstens einmal zulassen möchte, und der endgültige Rückgabetyp ist mir egal. Somit:

val c = new Myclass
c foo //ok !
c foo bar // ok!
c foo foo // refuse to compile
c foo bar foo //refuse to compile

Ich habe eine Weile mit diesem Problem zu kämpfen und meine Sicht wird verschwommen! Ich habe versucht, implizite Klassen zu verwenden, um Objekte zu analysieren, die dies benötigenhat nicht Ich habe die zugehörige Eigenschaft verwendet, und ich kann nicht herausfinden, wie, ob sie die Eigenschaft "verbrauchen" müssen, indem sie aus der verfügbaren Objekteigenschaft entfernt werden. Ich kann auch nicht herausfinden, wie.

Ich suche derzeit in der Reflection-API, aber es ist für mich immer noch ein wenig dunkel.

Hilfe wäre dankbar! =)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage