tutorial programacion imagenes erlang

programacion - Erlang-procesos de desove y argumentos pasados



erlang tutorial (2)

Me sigo topando con esto. Quiero generar procesos y pasarles argumentos sin usar el formulario MFA (módulo / función / argumentos), así que básicamente sin tener que exportar la función que quiero generar con argumentos. He tenido varias veces este problema utilizando cierres (de diversión) y teniendo los argumentos solo límites de valores fuera de la diversión (que luego hago referencia dentro de la diversión), pero esto limita la estructura de mi código ... He mirado el docs y spawn solo tienen el spawn / 1 y el spawn / 3 regulares, nada más ...

Entiendo que la recarga de códigos en procesos generados no es posible sin el uso del formulario MFA, pero los procesos generados no son de larga ejecución y terminan relativamente rápido, por lo que no es un problema (también quiero incluir todo el código en un módulo -función de nivel con subtrabajos puestos en funs dentro de esa función).

muy apreciado gracias


Respuesta corta: no puedes. Engendrar (en todas sus formas variadas) solo toma una función de 0 aria. El uso de un cierre y la incorporación de variables vinculadas de la función de desove es el camino a seguir, salvo el uso de algún tipo de almacén de datos compartido como ETS (que es Monster Overkill).

Sin embargo, nunca he encontrado que usar un cierre obstaculice seriamente la estructura de mi código; ¿Puedes dar un ejemplo de los problemas que estás teniendo y quizás alguien pueda arreglarlo por ti?


en realidad, Richard me indicó la dirección correcta para evitar el problema de nicelly (en respuesta a la misma publicación que presenté en Erlang GoogleGroups): http://groups.google.com/group/erlang-programming/browse_thread/ hilo / 1d77a697ec67935a

Su respuesta:

Al "usar cierres", espero que te refieras a algo como esto:

Pid = spawn (fun () -> any_function (Any, Number, Of, Arguments) end)

¿Cómo sería eso limitar tu estructura de código?

/Richard

gracias por comentarme prontamente mi pregunta. Muy apreciado