Scala - inicializando mapas mutáveis e expondo-os como imutáveis

Existe algum padrão de código "bom" para umClass inicializando e preenchendo mapas mutáveis privados e depois expondo-os como imutáveis? Ou devo apenas me arrepender eternamente da minha falta funcional em tais casos?

Em uma certa classe, estou inicializando alguns mapas como mutáveis, como a lógica para inicializá-los não se encaixa muito naturalmente, neste caso, com uma abordagem de criação mutável pura. Ou, eu estava com preguiça de modelar imutável.

Agora, recebo o código feio do Scala - depois de todo o cálculo de inicialização, copio e converto os mapas mutáveis em imutáveis (principalmente através de.toMap) Isso já é feio, pois (1) o código tem o dobro do Maps e a dupla nomeação parece um pouco errada, e (2) as linhas de conversão parecem mais envolvidas do que eu esperava.

Além disso (3), não gosto que as definições de tipo dos Mapas imutáveis resultantes possam residir apenas na parte inferior do código agora, pois só podem ser declaradas após o cálculo da inicialização (ou podem ser definidaslazy e passar para o topo? ainda não totalmente elegante).

Alguma maneira de finalizar com elegância o código de inicialização mutável do Maps?

questionAnswers(2)

yourAnswerToTheQuestion