Jaki byłby funkcjonalny sposób na zip dwa słowniki w Scala?Zip dwa HashMaps (lub słowniki)
map1 = new HashMap("A"->1,"B"->2)
map2 = new HashMap("B"->22,"D"->4) // B is the only common key
zipper(map1,map2)
powinna dać coś podobnego do
Seq(("A",1,0), // no A in second map, so third value is zero
("B",2,22),
("D",0,4)) // no D in first map, so second value is zero
Jeśli nie działa, inny styl jest również ceniona
Haskell Data.Map ma wspaniały kombinator o nazwie "unionWith", który sprawi, że będzie to niezwykle łatwe. To i jego odpowiednik w przecięciu są niezwykle przydatne i żałuję, że są one dostępne tylko w "IntMap" i "LongMap" Scala (głównie dlatego, że są one tłumaczone z Haskella, jak przypuszczam). – copumpkin
@copumpkin: Haskell jest niesamowity! Sprawdzę związek. Po prostu sprawdziłem IntMap i jest on teraz zastępowany przez HashMap z 2.8 na – RAbraham
. To nie jest tak naprawdę zastąpione przez 'HashMap', pomimo tego, co sugeruje komentarz do dokumentacji. Są to różne struktury, a "IntMap" ma inne właściwości. Czasami naprawdę nie chcesz funkcji mieszania, szczególnie gdy chcesz zachować porządek danych. 'IntMap' może w większości zaimplementować' SortedMap', ale nie sądzę, że teraz to zrobi. Jedną z nich jest to, że następuje po "niepodpisanym" zamawianiu, ale nie jest trudno sprawić, by zachowywał się jak podpisany, jeśli tego właśnie potrzebujesz. – copumpkin