我目前正在尝试制作一个非常简单的应用程序,该应用程序会根据一天中的时间而打招呼。我的代码是:

open System

let read() = Console.Read()
let readLine() = Console.ReadLine()

let clockMsg min max todo =
    if (DateTime.Now.Hour > min) && (DateTime.Now.Hour < max) then todo

let name = readLine()

clockMsg 0 8 <| printfn "Go to bed, %s!" name
clockMsg 8 12 <| printfn "Good morning, %s!" name
clockMsg 12 18 <| printfn "Good afternoon, %s!" name

read() |> ignore

现在我的问题是,只有一个函数调用是有效的,但是这三个函数无论如何都将打印其消息?

最佳答案

同意BrokenGlass。您可能想做的是:

clockMsg 0 8 (fun() -> printfn "Go to bed, %s!" name)

这是clockMsg中的更改:
let clockMsg min max todo =
    if (DateTime.Now.Hour > min) && (DateTime.Now.Hour < max) then todo()

关于f# - F#- splinter 的 “then”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5287023/

10-08 20:58