Относительно команды 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 ), но это всего лишь пример.
задан Zecrates 23 July 2011 в 12:58
поделиться