为什么我的所有函数都在运行,即使我只在一个模块中调用一个函数?

Kal*_*exx 2 f#

我在Test.fs文件中有以下代码:

namespace Testing

module test1 =
    let Run =
        printfn "Test1"

module test2 =
    let Run =
        printfn "Test2"
Run Code Online (Sandbox Code Playgroud)

在我的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
Run Code Online (Sandbox Code Playgroud)

这输出

测试1

TEST2

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

N_A*_*N_A 5

test1.Run不是一个功能,它是一个价值.打开模块时,执行该模块中的所有顶级代码.在您定义这种情况下,test1.Runtest2.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打印出来的东西.