在 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/