#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
преобразовать aList[(A, B)]
в aMap[A, B]
.3. @Ionut, без . toMap тоже работает, знаете почему?
4. @Joselo интересно. Я не знал до сих пор, но похоже, что есть
перегрузка, которая принимает коллекцию кортежей, как и в вашем случае.