Qual è il modo "corretto" per creare un alias di un oggetto in Scala?Oggetti pacchetto Scala con tratto che fornisce alias di tipo/valore
Per esempio, diciamo che ho bisogno di un RoleGroup portata in varie parti della mia applicazione (che è suddiviso in sottoprogetti SBT)
trait RoleGroup
object RoleGroup {
case object ADMIN extends RoleGroup
case object MEMBER extends RoleGroup
case object PUBLIC extends RoleGroup
}
Dal momento che non voglio importare ripetutamente RoleGroup, ho hanno deciso di alias RoleGroup tratto e oggetto in tipo e la Val controparti in questo modo:
package com.developer
package controller
trait ControllerBase {
type RoleGroup = controller.RoleGroup
val RoleGroup = controller.RoleGroup
...
}
e poi sub progetto oggetti di pacchetto possono estendere il tratto aiuto per ottenere le importazioni gratuitamente:
package com.client
package object member
extends com.developer.controller.ControllerBase
Sto facendo lo stesso per gli altri oggetti caso che devono essere in ambito. È una soluzione ragionevole? cioè ci sono degli svantaggi/problemi di cui ho bisogno di essere a conoscenza? Tutto ciò che compila e le pagine di test del browser sembrano funzionare esattamente come nell'applicazione pre-refactoring, ma non sono sicuro che questo sia l'approccio migliore.
+1, interessante, che deve essere la ricetta alias quindi ;-) tipi per tratti/classi e val per oggetti e altri. Sicuramente può ridurre un sacco di standard di importazione con questo approccio – virtualeyes