¿Es posible en Scala especializarse en las condiciones dentro de un if
dentro de un para la comprensión? Estoy pensando en la línea de:Declaraciones `if` de comprensión de Scala
val collection: SomeGenericCollection[Int] = ...
trait CollectionFilter
case object Even extends CollectionFilter
case object Odd extends CollectionFilter
val evenColl = for { i <- collection if(Even) } yield i
//evenColl would be a SomeGenericEvenCollection instance
val oddColl = for { i <- collection if(Odd) } yield i
//oddColl would be a SomeGenericOddCollection instance
Lo esencial es que, al ceder i
, consigo una nueva colección de un tipo potencialmente diferente (por lo tanto me refiriéndose a ella como "especialización") - en lugar de sólo una versión filtrada del mismo tipo de GenericCollection.
La razón por la que pregunto es que vi algo que no pude descifrar (se puede encontrar un ejemplo on line 33 of this ScalaQuery example. Lo que hace es crear una consulta para una base de datos (es decir, SELECT ... FROM ... WHERE ...
), donde yo esperaba iterar sobre los resultados de dicha consulta
Esta pregunta no tiene mucho sentido. Voy a responder lo que creo que se lo preguntan, pero trato de mejorarlo. –
['For expressions'] (http://www.artima.com/pins1ed/for-expressions-revisited.html#23.1) debería ayudar. – 4e6
Agregué un poco para tratar de aclarar la pregunta, aunque pareces estar en lo cierto al pensar sobre lo que estaba preguntando. – Dylan