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

时间:2014-12-07 12:01:52

标签: .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)

我知道我可以使用.NET string.Format但是想知道是否有任何F#方式吗?

2 个答案:

答案 0 :(得分:8)

你的sprintf调用中有一个额外的逗号,试试这个:

let getDoubled x =  sprintf "%d doubled is %d" x (x * 2)

逗号意味着你正在构建一个元组,这就是你在第二个片段中所拥有的 - 一个函数的元组(你的部分应用sprintf等待第二个参数)和一个int(x*2)的结果。

答案 1 :(得分:3)

我认为你不需要逗号。

此:

let getDoubled x =  sprintf "%d doubled is %d" x, x * 2

应该是:

let getDoubled x =  sprintf "%d doubled is %d" x (x * 2)