¿Cuál es el tipo de su diccionario?
Si es no genérico IDictionary
como el fragmento de código indica, a continuación, intente lo siguiente (en F #, for
no se inserta de manera implícita las conversiones, por lo que es necesario agregar Seq.cast<>
para conseguir una colección mecanografiado que se puede trabajar fácilmente con):
for entry in dict |> Seq.cast<DictionaryEntry> do
// use 'entry.Value' and 'entry.Key' here
Si está utilizando genérica IDictionary<'K, 'V>
entonces no es necesario el llamado a Seq.cast
(si tiene ningún control sobre la biblioteca, esto es mejor que la opción anterior):
for entry in dict do
// use 'entry.Value' and 'entry.Key' here
Si está utilizando el tipo de F # Map<'K, 'V>
inmutable (que es el mejor tipo para usar si está escribiendo código funcional en F #) entonces puede usar la solución de Pavel o puede usar el loop junto con el patrón activo KeyValue
esto:
for KeyValue(k, v) in dict do
// 'k' is the key, 'v' is the value
En los dos casos, se puede utilizar cualquiera de for
o varias funciones iter
. Si necesita realizar algo con efectos secundarios, entonces preferiría for
loop (y esta no es la primera respuesta donde menciono esto :-)), porque esta es una construcción de lenguaje diseñada para este propósito. Para el procesamiento funcional, puede usar varias funciones como Seq.filter
, etc.
Curiosidad: ¿Hay alguna razón para imprimir con \ n al final de la cadena en lugar de solo printfn? –
Hago la pregunta opuesta cada vez que veo 'printfn'. No hay razón, por supuesto, solo preferencia personal. –