格式字符串中的F#类型推断

时间:2009-03-05 22:11:40

标签: f#

如何在编译时检查格式字符串以确定x在以下定义中是否具有int类型?

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

这是硬编码到语言中还是有人可以编写自己的“my_print”函数,该函数使用不同语法的格式字符串?例如:

let foo x = my_print "{integer}" x

2 个答案:

答案 0 :(得分:3)

您可以在6.4.17('printf'格式)here中阅读一些相关内容,但请简要介绍

  • 它内置于语言
  • 字符串文字可以有效地“强制”为奇怪的“格式”类型
  • printf和朋友们期待格式类型的第一个参数,使强制发生

最终结果是您可以构建自己的printf样式函数,但必须使用相同的%s格式,因为这些内容是内置的。

答案 1 :(得分:3)

Here是一个如何在F#中构建自己的printf样式函数的示例。您无法更改格式说明符(例如“%d”),但您可以利用现有的说明符来构建编译器将键入的其他字符串格式化函数。