这可能很简单,但我有一个包含简单示例函数的 .fs 文件。
let printHello = printfn "%A" "Hello"
我已经使用
将搜索路径设置为 .fs 文件>#I "PathToMyFSFile"
我已经使用
加载了我的文件>#load "Test.fs"
效果很好。现在我想调用将 hello 实际打印到屏幕的函数,但事实证明那太难了
> Test.printHello;;
val it : unit = ()
尝试过 Test.printHello();;同样,但不起作用。我实际上如何让它在屏幕上打印“Hello”?
最佳答案
您当前的 printHello
实际上不是一个函数。要使其成为您需要做的功能
let printHello() = printfn "%A" "Hello"
注意 ()
。然后一切都应该工作。
编辑:
当编译器看到你的定义时
let printHello = printfn "%A" "Hello"
它将它作为一个简单的数据项传递。例如,考虑这个程序:
let printHello = printfn "%A" "Hello"
printfn "World"
printHello
这将打印 "Hello"
然后是 "World"
。 printHello
只有单位类型,所以什么都不做。对比一下
let printHello() = printfn "%A" "Hello"
printfn "World"
printHello()
这里 printHello
是一个函数。在这种情况下,函数仅在显式调用时执行,因此打印 "World"
然后是 "Hello"
。
关于f# - Printfn 值不是函数,不能在 F# 的交互窗口中应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091681/