Вызов карты в параллельной коллекции через ссылку на тип предка
Я пытался сделать необязательным запускmap
работать последовательно или параллельно, например, используя следующий код:
val runParallel = true
val theList = List(1,2,3,4,5)
(if(runParallel) theList.par else theList) map println //Doesn't run in parallel
Я заметил, что операция map не выполняется параллельно, как я ожидал. Хотя без условного было бы:
theList.par map println //Runs in parallel as visible in the output
Тип выражения(if(runParallel) theList else theList.par)
который я ожидаю быть ближайшим общим предком обоих типовtheList
а такжеtheList.par
это страшный тип, который я не буду здесь вставлять, но на него интересно смотреть (через консоль scala :)
:type (if(true) theList else theList.par)
Почему неmap
на параллельной коллекции работать параллельно?
ОБНОВЛЕНИЕ: это обсуждено вSI-4843 но из билета JIRA непонятно, почему это происходило на Scala 2.9.x.