La palabra clave forSome
se utiliza para definir tipos existenciales en Scala. Esta es la página de Scala glossary que explica cuáles son. No pude encontrar un lugar en los documentos de Scala explicando en detalle, así que here es un artículo de blog que encontré en Google explicando cómo son útiles.
Actualización: puede encontrar una definición precisa de tipos existenciales en el Scala specification pero es bastante densa.
Para resumir algunas de las publicaciones a las que me he vinculado, los tipos existenciales son útiles cuando quiere operar en algo pero no le importan los detalles del tipo. Por ejemplo, usted quiere operar sobre matrices, pero no le importa qué tipo de matriz:
def printFirst(x : Array[T] forSome {type T}) = println(x(0))
que también se podría hacer con una variable de tipo del método:
def printFirst[T](x : Array[T]) = println(x(0))
pero Puede que no desee agregar la variable de tipo en algunos casos. También puede agregar un salto a la variable de tipo:
def addToFirst(x : Array[T] forSome {type T <: Integer}) = x(0) + 1
Véase también this blog post que es donde conseguí este ejemplo de.
@JanekBogucki El enlace de arriba no funciona. – jpcooper
http://www.scala-lang.org/news/roadmap-next.html - "se eliminó alguna sintaxis". –
forSome está programado para su eliminación en el lanzamiento de "Don Giovanni": https://www.scala-lang.org/news/roadmap-next.html –