为什么没有#load工作
我已经在同一个文件夹和相关文件夹中尝试了它,如下所示
我错过了什么?
run.fsx是
let doItAll message key = key + " has handled " + message
shared.fsx是
run.fsx(x,y): error FS39: The value or constructor 'doItAll' is not defined
错误是
{{1}}
答案 0 :(得分:6)
如果未在shared.fsx
中明确指定命名空间或模块名称,则F#编译器会将文件中的代码放在隐式命名的模块Shared
中。您应该可以通过添加open Shared
:
#load "../shared/shared.fsx"
open Shared
let key = "MyKey"
let Run(message: string, log: TraceWriter, result: byref<string>) =
result <- doItAll message key
log.Info(sprintf "F# results: %s" result)
如果您想自己控制命名,您还可以在module
中添加shared.fsx
声明,并自行提供明确的名称:
module SharedStuff
let doItAll message key = key + " has handled " + message