Dato il metodo generico register
di seguito vorrei definire l'operatore :=
come alias simbolico.Qual è la notazione più breve per definire un operatore come alias di un metodo in Scala?
def register[Prop <: Property[_]](prop: Prop): Prop
@inline
final def :=[Prop <: Property[_]] = register[Prop] _
Originariamente ho voluto scrivere qualcosa del genere:
val := = register _
Ma che mi dà la funzione di firma Nothing => Nothing
. Il mio prossimo tentativo è stato quello di parametrizzarlo con il tipo Prop
ma che apparentemente funziona solo se lo faccio a def
, che può prendere i parametri di tipo e passarli in poi.
Idealmente, vorrei omettere l'annotazione @inline
ma non sono sicuro di quale codice oggetto il compilatore Scala ne faccia.
Più importante il mio obiettivo è non avere il metodo :=
duplicare tutte le parti la firma del metodo del register
tranne che per il nome e poi semplicemente lasciare che la ex delegato a questi ultimi.
La delega dei metodi con firme duplicate è esattamente ciò che volevo evitare. Vedi il mio ultimo paragrafo "Più importante ...". Inoltre non voglio dover manualmente avanzare alcun argomento. –
@TimFriske Sfortunatamente, dovrai farlo, se vuoi farlo. –