gpt4 book ai didi

f# - 嵌套函数调用中的 printfn 未在控制台上打印任何内容

转载 作者:行者123 更新时间:2023-12-01 00:12:01 27 4
gpt4 key购买 nike

我在下面提到了用 F# 语言编写的代码:

let f () = 
printfn "This function will print f"
0

let xs (x) =
printfn "This function will print xs"
f
()


[<EntryPoint>]
let main ( argv : string[]) =
xs 4 |> ignore
0

当我运行这个程序时,我在控制台上只得到一个打印语句(出现在 sx 函数中):

This function will print xs

语句 This function will print f present inside f function is not getting printed.有趣的是,当我在调试时按 F11 进入函数 f 时,即使函数 f 中有一个断点,控件也根本不会去那里

更有趣的是,如果我在函数 f 中引入一个参数,那么它就会开始工作。因此,如果我将函数 f 更改为:

let f (x) = 
printfn "This function will print f"
0

let xs (x) =
printfn "This function will print xs"
f 2
()


[<EntryPoint>]
let main ( argv : string[]) =
xs 4 |> ignore
0

然后这个打印语句开始工作:

This function will print f

This function will print xs

有人可以解释这种奇怪的行为吗?我确信我遗漏了一些与 F# 世界或其功能方面相关的非常基本的东西。我有 C# 背景。

最佳答案

您没有调用 f ,您只是在此处放置一个函数,而没有为其提供所需的参数。

这就是当你给它一个参数时它起作用的原因。您还必须对空括号执行相同的操作:

let xs (x) = 
printfn "This function will print xs"
f ()
()

如果你想要最后的 ()作为 f 的参数,您必须添加更多缩进:

let xs (x) = 
printfn "This function will print xs"
f
()

关于f# - 嵌套函数调用中的 printfn 未在控制台上打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com