Pregunta

vi este código en Erlang:

[X-$0 || X<-someFun()]

En esa línea me encontré con la sintaxis -$0 muy útil.

He leído el código y una estimación de lo que significa, pero no estoy muy seguro: está dividida que todos los números

?

Me gustaría ver la página de explicación o de hombre que la sintaxis, pero no puedo encontrarlo. ¿Alguien puede mostrar la página correcta?

¿Fue útil?

Solución

Lo que el código está haciendo es tomar la salida desde someFun() (que necesita para devolver una lista), y para cada elemento de la lista que está asignando el valor del elemento a la X variable y luego restando el valor ASCII de la 0 carácter a partir de ese valor. La lista resultante es entonces el valor de toda esa expresión.

lo que está haciendo, en la práctica (y he escrito este código decenas de veces a mí mismo), está asumiendo que someFun/0 es una función que devuelve una cadena con sólo dígitos en ella, y luego la conversión de dicha cadena en una lista de la dígitos. Por lo tanto, si someFun() devuelto "12345", el resultado de esta lista por comprensión es [1, 2, 3, 4, 5].

Si está familiarizado con el concepto de una función map (como en, MapReduce), entonces éste debería ser que suena bastante familiar por ahora.

Esta página wikibooks parece una buena introducción a la lista de Erlang por comprensión:

http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions

libro de Joe Armstrong "Programación Erlang", de la estantería pragmático, ( http: // pragprog .com / títulos / jaerlang / programación Erlang ) también cubre las listas por comprensión muy bien (junto con todo lo demás relacionado Erlang). Libro excelente, muy recomendable, etc.

Otros consejos

La página normal de la documentación para las listas por comprensión se encuentra en la Erlang Manual de referencia Sección 6.22 y en Ejemplos de programación Sección 3.

Ambos son en la página principal documentación (haga clic en la carpeta de programación Erlang en la mano izquierda barra de menús).

La documentación de Erlang es fabuloso - es sólo su diseño es un poco shonky ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top