在 F# 中,sprintfn 去哪儿了?

Tho*_*mas 4 f#

sprintfn在 F#中有几页提到。

其中之一是经典之作:https : //fsharpforfunandprofit.com/posts/fsharp-in-60-seconds/

但也是在这里,在 Tomas 的回答中:“表达式问题”是否可以在 F# 中解决?

不过我好像不能用,好像没有定义。它是否从语言中删除?

Tom*_*cek 6

据我所知,目前在标准 F# 库中的任何地方都无法使用此函数。鉴于我们有printf/printfn,这听起来像是一个可能有用的补充。你当然可以自己定义它:

let sprintfn fmt = 
  Printf.kprintf (fun s -> s + "\n") fmt

sprintfn "Hello %s!" "world"
Run Code Online (Sandbox Code Playgroud)

回答它去哪里的问题 - 我不完全确定它曾经存在过。我的 SO 答案只是一个草图,而不是一个可执行代码,所以这可能只是一个错误。从 Scott 共享的代码仅在注释中使用该函数。

肯定有一个旧的 Visual Studio“F# 脚本文件”模板(我可以在我的机器上找到大约 2010 年的副本),其中包含以下内容:

/// A string computed using the 'sprintfn' string layout function
let stringE = sprintf "stringC = %s, stringD.Length = %d" stringC stringD.Length
Run Code Online (Sandbox Code Playgroud)

如果您在 GitHub 上进行搜索,您会发现一些对此的引用,但其中大部分只是 Scott 代码的副本。有一些库定义了自己的sprintfn功能,但不是很多。

令人惊讶的是,您还可以从 WebArchive 下载 2010 年 11 月的 F# 代码下载,但其中也没有提及sprintfn. 所以,我真的认为它从未存在过:-)。