2012-03-21 7 views
13

Se ho una classe che prende una tupla nel suo costruttore tra gli altri valori quali:Come si dichiara un alias di tipo in un costruttore di scala?

class Foo(a: Int, b: String, c: (Int, String)) 

Come si usa un tipo astratto che invia la tupla un nome più descrittivo in modo leggero (senza avvolgendolo di una nuova classe):

class Foo(a: Int, b: String, c: Dave) 

non sono sicuro di come portare un tipo alias nel campo di applicazione (o se questa è la cosa migliore da fare):

type Dave = (Int, String) 

I C'è una convenzione per dove definire i tipi in questo modo (o dovrei definire le classi di casi e avvolgere tutto ...)?

Apprezzo che non ha senso in molte situazioni, ma se sto cercando solo un nome più descrittivo è possibile?

Grazie!

+3

vedi [questa] (http://stackoverflow.com/questions/3400734/package-objects) – Jamil

+0

Ah molto cool, grazie! –

+0

"type aliases" è un termine decisamente migliore di quello che sono riuscito a trovare ... –

risposta

6

Si potrebbe utilizzare un tipo alias come:

scala> type MyTuple = Tuple2[Int,String] 
defined type alias MyTuple 

scala> val x = new MyTuple(1, "one") 
x: (Int, String) = (1,one) 
+2

Sì, era lo scope dell'alias di tipo con cui avevo problemi, Jamil mi ha indicato gli oggetti del pacchetto nel commento sopra. –

+0

@MatthewPickering si prega di chiudere la domanda –