如何从函数返回格式化的字符串?
问题描述:
我正在学习F#,所以如果这是非常基本的原谅我。我有一个应该返回格式化字符串的函数:如何从函数返回格式化的字符串?
> let getDoubled x = sprintf "%d doubled is %d" x, x * 2;;
但是,当我执行这个函数返回以下内容:
> getDoubled 2;;
val it : (int -> string) * int = (<fun:[email protected]>, 4)
我知道我可以使用.NET的string.Format
但不知道是否有是F#的方式吗?
答
你在你的sprintf调用一个额外的逗号,试试这个:
let getDoubled x = sprintf "%d doubled is %d" x (x * 2)
逗号表示正在构造一个元组,这就是你必须在你的第二个片段 - 一个函数的元组(你正在等待第二个参数的部分应用sprintf
)和一个int(x*2
的结果)。
答
我不认为你需要逗号。
此:
let getDoubled x = sprintf "%d doubled is %d" x, x * 2
应该是:
let getDoubled x = sprintf "%d doubled is %d" x (x * 2)