Можно ли в scala специализироваться на условиях внутри if
внутри a для понимания? Я думаю по строкам:
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
Суть в том, что, уступая i
, я получаю новую коллекцию потенциально другого типа (следовательно, я имею в виду ее как "специализацию" ) - в отличие от просто отфильтрованной версии того же типа GenericCollection.
Причина, по которой я спрашиваю, это то, что я увидел нечто, что я не мог понять (пример можно найти