質問
F#がコンパイル時にフォーマット文字列を調べて、次の定義でxがint型であると判断する方法はありますか?
let foo x = sprintf "%d" x`?
これは言語にハードコードされていますか、それとも誰かが独自の「my_print」を書くことができますか?異なる構文のフォーマット文字列を使用する関数?例:
let foo x = my_print "{integer}" x
解決
6.4.17(「printf」形式)でそれについて少し読むことができますこちら、ただし簡単に
- 言語に組み込まれています
- 文字列リテラルは、奇妙な「フォーマット」型に効果的に「強制」することができます
- printfとその友人は、Formatタイプの最初の引数を想定しているため、強制が発生します
最終的な結果として、独自のprintfスタイルの関数を作成できますが、そのようなものが組み込まれているため、同じ%s形式を使用する必要があります。
他のヒント
こちらは、独自のprintf- F#のスタイル関数。書式指定子("%d"など)を変更することはできませんが、既存の指定子を活用して、コンパイラが型チェックする追加の文字列書式設定関数を構築できます。
所属していません StackOverflow