4

我在文件中有以下代码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

测试2

Test2即使我只是在打电话,为什么还在输出Test1.Run

4

1 回答 1

7

test1.Run不是函数,而是值。当您打开一个模块时,您将执行该模块中的所有顶级代码。在这种情况下,您正在定义test1.Run并且test2.Run它们都是绑定而不是函数。

我无法从您发布的内容中确切知道发生了什么,但很明显您的 main 函数没有被调用,否则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也会打印一些东西。

于 2013-05-18T03:47:43.877 回答