gpt4 book ai didi

f# - 在 F# 中,如何柯里化(Currying) ParamArray 函数(如 sprintf)?

转载 作者:行者123 更新时间:2023-12-02 08:37:59 27 4
gpt4 key购买 nike

在 F# 中,如何柯里化(Currying)一个接受可变数量参数的函数?

我有这样的代码...(日志函数只是一个示例,具体实现并不重要)

let log (msg : string) =
printfn "%s" msg

log "Sample"

它在整个代码中使用 sprintf 格式的字符串进行调用,例如。

log (sprintf "Test %s took %d seconds" "foo" 2.345)

我想在日志函数中柯里化(Currying) sprintf 功能,所以它看起来像......

logger "Test %s took %d seconds" "foo" 2.345

我尝试过类似的方法

let logger fmt ([<ParamArray>] args) =
log (sprintf fmt args)

但我不知道如何将 ParamArray 参数传递给 sprintf 调用。

这在 F# 中是如何完成的?

最佳答案

let log (s : string) = ()
let logger fmt = Printf.kprintf log fmt

logger "%d %s" 10 "123"
logger "%d %s %b" 10 "123" true

关于f# - 在 F# 中,如何柯里化(Currying) ParamArray 函数(如 sprintf)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145680/

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