我想将一个或多个 .fsx
文件加载到 F# 交互式环境中,并使所有在 .fsx
文件中定义的函数在作用域内,以便我可以直接在控制台中使用这些函数。
#load
指令会执行指定的 .fsx
文件,但是之后我无法再使用该文件中的函数。有没有解决方法?谢谢。
我想将一个或多个 .fsx
文件加载到 F# 交互式环境中,并使所有在 .fsx
文件中定义的函数在作用域内,以便我可以直接在控制台中使用这些函数。
#load
指令会执行指定的 .fsx
文件,但是之后我无法再使用该文件中的函数。有没有解决方法?谢谢。
如果在fsx文件中没有声明模块,则会隐式创建一个与文件名相同的模块。
因此,在使用之前,您可以始终使用完全限定名称或打开相应的模块来引用另一个fsx文件。例如,在Script2.fsx
中,您可以执行以下操作:
#load "Script1.fsx"
open Script1
// Use functions in Script1.fsx
// ...
我怀疑你加载的脚本不是一个模块,这可能导致你的问题。只需添加
module Script1
你可以在第一份脚本中执行,然后就可以继续操作了。
#load "Script1.fsx"
open Script1
你的函数将会被访问到。
Script1.fsx
的能力。 - pad如果要从终端运行脚本并在交互模式下使用它,可以添加以下指令:
#if INTERACTIVE
#else
module Script
#endif