La parola chiave forSome
viene utilizzata per definire tipi esistenziali in Scala. C'è questa pagina di Scala glossary che spiega cosa sono. Non sono riuscito a trovare un posto nei documenti Scala spiegandoli in dettaglio, quindi here è un articolo sul blog che ho trovato su Google che spiega come sono utili.
Aggiornamento: è possibile trovare una definizione precisa dei tipi esistenziali nello Scala specification ma è piuttosto denso.
Per riepilogare alcuni dei post a cui mi sono collegato, i tipi esistenziali sono utili quando si desidera operare su qualcosa ma non si preoccupano dei dettagli del tipo in esso contenuto. Ad esempio, si vuole operare su array, ma non si cura che tipo di matrice:
def printFirst(x : Array[T] forSome {type T}) = println(x(0))
che si potrebbe anche fare con una variabile di tipo sul metodo:
def printFirst[T](x : Array[T]) = println(x(0))
ma si potrebbe non voler aggiungere la variabile type in alcuni casi. È inoltre possibile aggiungere un balzo alla variabile tipo:
def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1
vedere anche this blog post che è dove ho ottenuto questo esempio da.
fonte
2012-02-25 14:49:12
@JanekBogucki Il collegamento sopra riportato non funziona. – jpcooper
http://www.scala-lang.org/news/roadmap-next.html - "forSome syntax is deleted." –
forSome è previsto per la rimozione nella versione "Don Giovanni": https://www.scala-lang.org/news/roadmap-next.html –