Padrão Scala Alias

Aqui está uma dica rápida para quando você tem muitos objetos que deseja trazer para o escopo sem ter várias importações repetidas. Particularmente útil para construções de estilo de enum.

Digamos que você tenha as seguintes definições

package com.sksamuel.role
trait
Role
object Role {
case object Admin extends Role
case object Developer extends Role
case object Staff extends Role
case object Customer extends Role
}

Em seguida, crie uma característica que altere o tipo e os valores.

package com.sksamuel.role
trait
Roles {
val
Role = otherpackage.Role
type
Role = otherpackage.Role
}

Agora você pode, é claro, misturar a característica para obter as importações, mas podemos dar um passo adiante e misturar a característica com um objeto de pacote para obter as importações gratuitamente em todo o pacote.

package com.sksamuel.elsewhere
package object elsewhere extends com.sksamuel.role.Roles

Agora as importações estão disponíveis para tudo no pacote com.sksamuel.elsewhere.