Tornando alla Scala dopo un periodo di scrittura a Haskell, ho iniziato ad usare la parola chiave tipo per fare le mie definizioni di classe un po 'più leggibile, ad esempio:Scala Tipo di parola chiave: il modo migliore per usarlo su più classi
type RestfulParams = Map[String, String]
def canonicalize(params: RestfulParams): String = { ... }
Il problema che ho incontrato è che queste definizioni di tipo devono vivere all'interno di una classe o di un oggetto - non sono "cittadini di prima classe" come se fossero in Haskell. Se provo a definire un tipo al di fuori di una classe o di un oggetto, ottengo un compilatore expected class or object definition
.
Il mio problema è quindi come utilizzare questi tipi su più classi e oggetti in un pacchetto? Quello che ho fatto ora sembra abbastanza brutto:
object RestfulTypes { type RestfulParams = Map[String, String] etc }
E poi in un altro file di classe:
import utils.{RestfulTypes => RT}
def get(resource: String, params: RT.RestfulParams): String = { ... }
C'è un modo migliore di fare questo - e per inciso non i guru Scala pensano che sia una buona cosa o cosa brutta che i tipi possono essere definiti solo all'interno di classi/oggetti?
Perché non 'import utils.RestfulTypes._'? – soc