2014-06-16 7 views
5

Dire ho definito un tipo di costruttore di Box:Per "Casella [+ T]", posso dire "Il tipo Casella è covariante", è corretto?

trait Box[+T] 

ciò che è corretto?

  1. tipo Box è covariante
  2. tipo costruttore Box è covariante
  3. tipo di parametro T è covariante
  4. tipo di parametro T nel tipo di costruttore Box è covariant
  5. Se tutti sono errati, qual è il espressione corretta?
+3

"tipo Box è covariante ** in T **" – Ven

+0

Se non ricordo male, 'Box' non è un' type', ma un 'type constructor'? – Freewind

+0

@Ven Perché non postare solo come risposta visto che è quella giusta? – LMeyer

risposta

1

La corretta è:

"tipo Box è covariante in T"

+0

"Queue, come definito nel Listato 19.4, è un tratto, ma non un tipo." vedi: del libro "programmazione in scala" – Freewind

+0

Sì, la coda potrebbe essere un tratto, quindi? – Ven

+0

non è un tipo – Freewind

5

A proposito di scostamento dal libro Functional Programming in Scala:

Nella dichiarazione trait List[+A], il + davanti il parametro di tipo A è un'annotazione di variazione che segnala che A è un covariante o un parametro "positivo" di List. Questo significa che, ad esempio, List[Dog] è considerato un sottotipo di List[Animal], supponendo che Dog sia un sottotipo di Animal.

Problemi correlati