2012-03-03 15 views
17

Me gustaría cargar uno o más archivos .fsx en el interactivo F # y tener todas las funciones definidas en los archivos .fsx en el alcance para que pueda usar directamente las funciones en la consola.¿Cómo cargar el archivo de script F # externo y usarlo en F # interactive?

La directiva #load ejecuta el archivo .fsx especificado, pero entonces ya no soy capaz de utilizar esas funciones en el archivo .fsx. ¿Alguna solución para esto? Gracias.

Respuesta

20

sospecho que el script que está cargando no está en un módulo que puede estar causando el problema. Sólo tiene que añadir

module Script1 

en el primer guión y entonces usted puede hacer

#load "Script1.fsx" 
open Script1 

y sus funciones serán accesibles

+0

Entonces se pierde la capacidad de ejecutar 'Script1.fsx' de forma independiente. – pad

+0

Sí, esto funciona si estoy en Windows ... Pero si uso Mono en mi Mac, todavía no funciona. – ximyu

+0

¡Hacerlo de esta manera le permite usar sus archivos fuente * .fs en su * .fsx también! –

26

Si no declara un módulo en un archivo fsx, implícitamente crea un módulo con el mismo nombre que el nombre del archivo.

Por lo tanto, siempre puede consultar otro archivo fsx usando nombres completos o abrir los respectivos módulos antes de su uso. Por ejemplo, en Script2.fsx que puede hacer:

#load "Script1.fsx" 

open Script1 

// Use functions in Script1.fsx 
// ... 
+9

Tenga en cuenta que el módulo implícita utiliza siempre el caso Título independientemente del nombre del archivo –

+1

muy buen comentario ... –