Scala: переход от одного типа коллекции к другому

Относительно команды yield в Scala и следующего примера:

val values = Set(1, 2, 3)
val results = for {v <- values} yield (v * 2)

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

    15
    задан Zecrates 23 July 2011 в 12:58
    поделиться