Scala: inicializando mapas mutables y exponiéndolos como inmutables

¿Hay algún patrón de código "bueno" para unClass inicializando y poblando mapas privados mutables, y luego exponiéndolos como inmutables? ¿O debería arrepentirme eternamente de mi mala conducta funcional en tales casos?

En cierta clase, estoy inicializando algunos mapas como mutables, ya que la lógica para inicializarlos no encaja muy naturalmente, en este caso, con un enfoque de creación mutable puro. O bien, era flojo modelarlo inmutablemente.

Ahora, obtengo código feo de Scala: después de todo el cálculo de inicialización, copio-convierto los mapas mutables en inmutables (principalmente a través de.toMap) Esto ya es feo ya que (1) el código tiene el doble de Mapas y el doble de nombres se siente un poco fuera de lugar, y (2) las líneas de conversión parecen más complicadas de lo que esperaba.

Además (3), es de mi agrado que las definiciones de tipo de los Mapas inmutables resultantes, solo pueden residir en la parte inferior del código ahora, ya que solo se pueden declarar después del cálculo de inicialización (o, se pueden definirlazy y pasar a la cima? todavía no del todo elegante).

¿Alguna forma de envolver elegantemente el código de inicialización de Maps mutable?

Respuestas a la pregunta(2)

Su respuesta a la pregunta