Verwenden Sie Scala-Makros, um Methoden zu generieren
Ich möchte in Scala 2.11+ Aliase von Methoden mithilfe von Anmerkungsmakros generieren. Ich bin mir nicht mal sicher, ob das überhaupt möglich ist. Wenn ja, wie?
Beispiel - In Anbetracht dessen möchte ich, dass die Anmerkungsmakros zu @ erweitert werde
class Socket {
@alias(aliases = Seq("!", "ask", "read"))
def load(n: Int): Seq[Byte] = {/* impl */}
}
Ich möchte, dass die oben genannten Synonymmethodenstubs wie folgt generiert werden:
class Socket {
def load(n: Int): Seq[Byte] = // ....
def !(n: Int) = load(n)
def ask(n: Int) = load(n)
def read(n: Int) = load(n)
}
Das obige Beispiel ist natürlich ein scherzhaftes Beispiel, aber ich sehe, dass diese Technik nützlich ist, um automatisch synchronisierte / asynchrone Versionen von APIs oder DSLs mit vielen Synonymen zu generieren. Ist es möglich, diese generierten Methoden auch im Scaladoc verfügbar zu machen? Ist das mit Scala meta möglich?
Hinweis: Was ich frage, ist ganz anders als:https: //github.com/ktoso/scala-macro-method-alia
Auch bitte nicht als Duplikat von @ markierDie da die Frage ein bisschen anders ist und sich in den letzten 3 Jahren viel im Scala-Makroland verändert hat.