Frage
Wie ist es möglich, für F # Format-Strings bei der Kompilierung zu prüfen, ob die x zu bestimmen, int in der folgenden Definition geben?
let foo x = sprintf "%d" x`?
Ist das hartcodiert in die Sprache oder könnte jemand ihre eigene „my_print“ Funktion schreiben, die Format-Strings mit einer anderen Syntax verwendet? Zum Beispiel:
let foo x = my_print "{integer}" x
Lösung
Sie können ein wenig über sie in 6.4.17 ( 'printf' Formate) hier , aber kurz
- es in die Sprache integriert
- Stringliterale effektiv ‚gezwungen‘ in den seltsamen ‚Format‘ Typen wird
- printf und Freunde erwarten ein erstes Argument des Format-Typs, so dass der Zwang geschehen
Das Nettoergebnis ist, dass Sie Ihre eigenen printf-Stil Funktionen aufbauen können, müssen aber die gleichen% s-Formate verwenden, da das Zeug ist eingebaut.
Andere Tipps
Hier ist ein Beispiel, wie Sie Ihre eigenen printf- bauen Stil Funktionen in F #. Sie können die Formatbezeich ändern (zum Beispiel „% d“), aber Sie können die vorhandenen Planer nutzen, um zusätzliche String-Formatierungsfunktionen zu erstellen, die der Compiler Check geben wird.