.net 如何从函数返回格式化字符串?

.net 如何从函数返回格式化字符串?,.net,f#,.net,F#,我正在学习F#如果这是非常基本的,请原谅我。我有一个函数,应该返回格式化字符串: > let getDoubled x = sprintf "%d doubled is %d" x, x * 2;; 但当我执行此函数时,它会返回以下内容: > getDoubled 2;; val it : (int -> string) * int = (<fun:getDoubled@24-1>, 4) >get2;; val it:(int->string)*int=(,

我正在学习F#如果这是非常基本的,请原谅我。我有一个函数,应该返回格式化字符串:

> let getDoubled x =  sprintf "%d doubled is %d" x, x * 2;;
但当我执行此函数时,它会返回以下内容:

> getDoubled 2;;
val it : (int -> string) * int = (<fun:getDoubled@24-1>, 4)
>get2;;
val it:(int->string)*int=(,4)

我知道我可以使用.NET的
string.Format
,但我想知道是否有任何F#方法可以做到这一点?

如果sprintf调用中有一个额外的逗号,请尝试以下方法:

let getDoubled x =  sprintf "%d doubled is %d" x (x * 2)
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)