2014-12-07 50 views
5

我正在學習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#的方式嗎?

回答

8

你在你的sprintf調用一個額外的逗號,試試這個:

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

逗號表示正在構造一個元組,這就是你必須在你的第二個片段 - 一個函數的元組(你正在等待第二個參數的部分應用sprintf)和一個int(x*2的結果)。

3

我不認爲你需要逗號。

此:

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

應該是:

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