лучший способ создать карту из списка

#scala #scala-collections

#scala #scala-коллекции

Вопрос:

У меня есть функция, которая выглядит как:

  def functionTrans(f: FunctionDec) = {

    // some FunctionDec manipulation

    f.name -> FuncEntry(/* something here*/)
  }
  

Ведьма в основном выполняет манипуляции с FunctionDec и превращается в пару (String, FuncEntry).
Также у меня есть карта [String, FuncEntry] с именем varsEnv и список [FunctionDec] с именем decs . Мне нужно применить эту манипуляцию ко всему списку и вернуть расширенную карту.
То, что я сделал, выглядит так:

 val venvWithFunction = decs.foldLeft(varsEnv)(_   functionTrans(_))
  

Есть лучший способ сделать это с помощью scala-collection?

Ответ №1:

decs.map(functionTrans _).toMap должно быть достаточно.

Комментарии:

1. что-то вроде: val venvWithFunction = varsEnv decs.map(functionTrans) ?

2. @Joselo если varsEnv не пусто, то это: varsEnv decs.map(functionTrans).toMap . Вам нужно toMap преобразовать a List[(A, B)] в a Map[A, B] .

3. @Ionut, без . toMap тоже работает, знаете почему?

4. @Joselo интересно. Я не знал до сих пор, но похоже, что есть перегрузка, которая принимает коллекцию кортежей, как и в вашем случае.