Domanda

Come è possibile che F # esamini le stringhe di formato in fase di compilazione per determinare che x abbia type int nella seguente definizione?

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

È codificato nella lingua o qualcuno potrebbe scrivere il proprio "mio_print"? funzione che utilizza stringhe di formato con una sintassi diversa? Ad esempio:

let foo x = my_print "{integer}" x
È stato utile?

Soluzione

Puoi leggerne un po 'al riguardo in 6.4.17 (formati' printf ') qui , ma brevemente

  • è integrato nella lingua
  • i letterali di stringa possono essere effettivamente "forzati" nel tipo strano "Formato"
  • printf e gli amici si aspettano un primo argomento del tipo Format, facendo accadere la coercizione

Il risultato netto è che puoi creare le tue funzioni in stile printf, ma devi usare gli stessi formati% s, poiché quella roba è integrata.

Altri suggerimenti

Here è un esempio di come è possibile creare il proprio printf- funzioni di stile in F #. Non puoi modificare gli identificatori di formato (ad es. & Quot;% d "), ma puoi sfruttare gli specificatori esistenti per creare funzioni di formattazione delle stringhe aggiuntive che il compilatore digiterà check.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top