2009-03-05 41 views
4

F#在編譯時如何檢查格式字符串以確定x在以下定義中具有int類型?格式字符串中的F#類型推斷

let foo x = sprintf "%d" x`? 

這是硬編碼到語言或可能有人編寫使用格式字符串用不同的語法自己的「my_print」功能?例如:

let foo x = my_print "{integer}" x 

回答

3

你可以閱讀一些關於它在6.4.17(「的printf」格式)here,但簡要地說

  • 它內置在語言
  • 字符串文字可以有效地「裹挾」進怪異的「格式」型
  • printf和朋友們期待的格式類型的第一個參數,使得強制發生

最終結果是您可以構建自己的printf樣式函數,但必須使用相同的%s格式,因爲這些內容是內置的。

3

Here是一個如何在F#中構建自己的printf樣式函數的示例。您無法更改格式說明符(例如「%d」),但可以利用現有的說明符來構建編譯器將鍵入的其他字符串格式化函數。