2017-03-27 80 views
5

爲什麼不#load工作#load無法加載共享.fsx

我已經試過了在同一文件夾,並在相對的文件夾,如下

我缺少什麼?

run.fsx是

#load "../shared/shared.fsx" 
let key = "MyKey" 

let Run(message: string, log: TraceWriter, result: byref<string>) = 
    result <- doItAll message key 

    log.Info(sprintf "F# results: %s" result) 

shared.fsx是

let doItAll message key = key + " has handled " + message 

誤差

run.fsx(x,y): error FS39: The value or constructor 'doItAll' is not defined 
+0

注 - 確保你已經編輯了host.json設置 { \t「watchDirectories」:「共享」,「共享FS」] } –

回答

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) 

如果你想控制命名自己,你也可以在shared.fsx添加module聲明,並把自己託付給一個明確的名稱:

module SharedStuff 

let doItAll message key = key + " has handled " + message 
+0

感謝托馬斯 - 這是有點說不清楚 同樣爲了澄清它是文件名前面的大S,而不考慮文件名的情況。 –

+0

@DavidLapeš是的,F#大寫第一個字母 - 我不太清楚規則是什麼,所以使用明確的模塊名稱總是一個更安全的選項:) –

相關問題