gpt4 book ai didi

f# - 如何编写带有可变数量参数的 F# printfn 的自定义版本?

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

我想编写一个扩展版本的 F# printfn 函数,除了文本之外还打印当前时间。像这样的东西:

let printimefn fmt =
let time = DateTime.Now
let strtime = sprintf "%02d:%02d:%02d" time.Hour time.Minute time.Second
printfn "%s %A" strtime fmt

不幸的是,这不能按预期工作。 “fmt”参数失去了它的类型 Printf.TextWriterFormat<'T>。

我可以通过使用类型注释来强制它的类型:
let printimefn (fmt : Printf.TextWriterFormat<'T>) =
let time = DateTime.Now
let strtime = sprintf "%02d:%02d:%02d" time.Hour time.Minute time.Second
printfn "%s %A" strtime fmt

但是随后 printimefn 的结果变成了单位,而不是 'T。所以它仍然不起作用。我想知道编写自定义 printfn 函数的正确方法是什么。

最佳答案

这可以通过 Printf.ksprintf 来完成

let printimefn fmt =
let time = DateTime.Now
Printf.ksprintf (
fun s ->
printfn "%02d:%02d:%02d %s" time.Hour time.Minute time.Second s)
fmt

关于f# - 如何编写带有可变数量参数的 F# printfn 的自定义版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52072557/

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