我有一個模擬爲地圖[位置,播放器]的遊戲板。對於 我想將其轉換爲 Map [Player,Set [Location]]。舉個例子,如果我們簡化和 鍵和值使用的符號,我想要改造這個:將地圖[A,B]轉換爲地圖[B,設置[A]]並返回
Map('a -> 'X, 'b -> 'O, 'c -> 'X, 'd -> 'O)
成這樣:
Map('O -> Set('b, 'd), 'X -> Set('a, 'c))
(我有一個解決方案出來了,而寫這問題,請在下面發表評論,或許還有其他更好的方法嗎?)
請注意mapValues(和filterKeys)。他們很懶/返回地圖上的視圖。 –
我正在處理不可變的地圖。這應該表示我沒事吧? –
在這個特定情況下,你很好。請記住,mapValues返回一個「視圖」,因此每次使用視圖時都會執行mapValues的閉包。如果傳遞給mapValues的閉包存在副作用,這是很危險的。有關示例,請參閱此要點:https://gist.github.com/davidandrzej/5006950 –