我正在学习F#,并具有以下代码:
问题是当我运行项目时,所有功能都立即运行。来自C#,我以为只有Main函数会运行。如何解决这个问题?这是一些缩进问题吗?

open System
open System.Windows.Forms

let form
    =
        new Form
            (
                Width = 400,
                Height = 300,
                //Visible = false,
                Text = "Hello World F#"
            )

let MyFunction1
    =
        System.Diagnostics.Process.Start("calc.exe")

let AnotherFunction
    =
        let agora = DateTime.Now
        let fn = @"C:\temp\testef.txt"
        System.IO.File.WriteAllText (fn, "Olá " + agora.ToString())
        System.Diagnostics.Process.Start("notepad.exe", fn)


[<EntryPoint>]
let main argv
    =
        let f = form.ShowDialog()
        f |> Console.WriteLine
        0

f# - 所有功能立即运行,如何仅运行主要功能?-LMLPHP

最佳答案

您需要向函数添加至少一个参数,否则它们将是不是函数的值。

如果没有任何要传递给函数的函数,则它们应该接收一个单位参数,例如,此处应为:

let MyFunction1 ()
    =
        System.Diagnostics.Process.Start("calc.exe")

当let绑定没有参数时,它将成为一个值并立即执行。

切换到函数式编程时的困惑是,实际上函数也是值,您可以传递的一等公民,但是在像F#这样的非惰性语言中,它们仅在您在调用站点提供参数时才执行代码。

关于f# - 所有功能立即运行,如何仅运行主要功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46124230/

10-14 15:32
查看更多