gpt4 book ai didi

f# - 我可以使用 StringFormat 作为 TextWriterFormat 吗? kfprintf/kprintf 用法

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

我有登录到控制台的功能

        Printf.kprintf
(printfn
"[%s][%A] %s"
<| level.ToString()
<| DateTime.Now)
format // fprint to System.Console.Out maybe

但它使用 Printf.StringFormat 作为格式,现在我想遵循相同的逻辑并将其打印到文件。

所以我尝试
        Printf.kfprintf 
(fun f ->
fprintfn file "[%s][%A] "
<| level.ToString()
<| DateTime.Now
) file (format)

还有两件事我无法理解。为什么会有 unit -> 'A而不是 string -> 'A ?我应该如何使用它?我可以用我的 StringFormat此处为 TextWriterFormat ?

另一个问题是,第一个片段我继承了 formatstring -> 'Result事情,但在 kfprintf 我不能这样做,因为有 unit -> 'Result并且格式消息出现在 [x][x] 之前东西。我想我可以以某种方式继承 formatf但我找不到好的例子,我唯一找到的是 F# 编译器的一部分:
[<CompiledName("PrintFormatToTextWriter")>]
let fprintf (os: TextWriter) fmt = kfprintf (fun _ -> ()) os fmt

[<CompiledName("PrintFormatLineToTextWriter")>]
let fprintfn (os: TextWriter) fmt = kfprintf (fun _ -> os.WriteLine()) os fmt

但是我怎么能用这个 unit ?如何在我的消息后发布消息?

最佳答案

我认为您不需要使用 Printf.kfprintf ,您可以继续使用 Printf.kprintf作为内部fprintfn使用 TextWriter .

let logToWriter writer level format =
Printf.kprintf (fprintfn writer "[%s][%A] %s"
<| level.ToString()
<| System.DateTime.Now) format

另见 this例如使用 Printf.kfprintf .

关于f# - 我可以使用 StringFormat 作为 TextWriterFormat 吗? kfprintf/kprintf 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16230278/

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