Относительно команды yield в Scala и следующем примере:
val values = Set(1, 2, 3)
val results = for {v <- values} yield (v * 2)
Может ли кто-нибудь объяснить, как Scala знает, к какому типу коллекции нужно уступить? Я знаю, что он основан на значениях, но как я могу писать код, который реплицирует выход? Есть ли способ изменить тип собираемой коллекции? В примере я хочу, чтобы результаты были типа List вместо Set. В противном случае, каков наилучший способ конвертировать из одной коллекции в другую? Я знаю об _: *, но поскольку Set не является Seq, это не работает. Самое лучшее, что я смог найти до сих пор, - результаты val listResults = List() ++.
Ps. Я знаю, что пример не соответствует рекомендуемому функциональному способу (который будет использовать карту), но это всего лишь пример.