Buenas, quiero armar un nuevo diccionario con los usuarios que participan de una conversación. Las claves las tengo en la lista que arme del string con los nombres. Y ya tengo un diccionario con todos los usuarios.
Alguna idea de como se podría implementar esta doble iteracion?
Hola:
Podés enviar el mensaje select:
al diccionario que ya tengas que te devolverá un nuevo diccionario que cumpla con las condiciones que pases en el bloque de código (cada elemento iterado sería una asociación, que vendría a ser el conjunto clave-valor).
Si no te sale te recomiendo plantear un ejemplo concreto (que no sea del TP) para resolverlo aquí.
Saludos,
Tomás
No lo puedo hacer andar. Ejemplo.
Tengo un diccionario todosLosLapices Lapices con 4 claves (Rojo, Azul, Amarillo, Blanco).
Tengo una lista que obtengo luego de hacer: listaColores := 'Rojo , Azul' splitOn: ' , '.
Quiero un nuevo diccionario algunosLapices con solo los colores que esten en listaColores.
lo ultimo que probe fue
algunosLapices := todosLosLapices collect: [each: | each at: listaColores].
Probá esto en el Playground (asumiendo que tenés implementada una clase Lapiz):
| lapices colores lapicesFiltrados |
Transcript clear.
lapices := Dictionary new.
lapices at: 'Rojo' put: Lapiz new.
lapices at: 'Azul' put: Lapiz new.
lapices at: 'Amarillo' put: Lapiz new.
lapices at: 'Blanco' put: Lapiz new.
colores := 'Rojo , Azul' splitOn: ' , '.
lapicesFiltrados := lapices associationsSelect: [ :assoc | colores includes: assoc key ].
Transcript show: lapicesFiltrados
De todas formas revisá tu modelo si está bien que haya un método que conozca todo eso y tenga esas responsabilidades.