我在Test.fs
文件中有以下代码:
namespace Testing
module test1 =
let Run =
printfn "Test1"
module test2 =
let Run =
printfn "Test2"
在我的Program.fs
我打电话:
[<EntryPoint>]
let main argv =
let sw = Stopwatch.StartNew()
printfn "%A" Testing.test1.Run
sw.Stop()
printfn "Problem took %d minutes, %d seconds, and %d milliseconds" sw.Elapsed.Minutes sw.Elapsed.Seconds sw.Elapsed.Milliseconds
let s = Console.ReadLine()
0 // return an integer exit code
此输出
测试1
的Test2
为什么Test2
正在输出,即使我只是在调用Test1.Run
?
答案 0 :(得分:5)
test1.Run
不是函数,它是一个值。打开模块时,执行该模块中的所有顶级代码。在这种情况下,您定义的是test1.Run
和test2.Run
,它们都是绑定而不是函数。
我无法确切地说明您发布的内容究竟发生了什么,但很明显您的主要功能未被调用,否则printfn "%A" Testing.test1.Run
会打印<null>
而printfn "Problem took %d minutes, %d seconds, and %d milliseconds" sw.Elapsed.Minutes sw.Elapsed.Seconds sw.Elapsed.Milliseconds
会打印出来还有一些东西。