Question

Comment est-il possible pour F # d'examiner les chaînes de format lors de la compilation afin de déterminer que x a un type int dans la définition suivante?

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

Cette information est-elle codée en dur dans la langue ou quelqu'un pourrait-il écrire lui-même "my_print"? fonction qui utilise des chaînes de format avec une syntaxe différente? Par exemple:

let foo x = my_print "{integer}" x
Était-ce utile?

La solution

Vous pouvez en savoir plus à ce sujet dans 6.4.17 (formats 'printf') ici , mais brièvement

  • il est intégré à la langue
  • les littéraux de chaîne peuvent effectivement être "forcés" dans le type "Format" étrange
  • printf et ses amis attendent un premier argument du type Format, rendant ainsi la coercition effective

Le résultat net est que vous pouvez créer vos propres fonctions de style printf, mais que vous devez utiliser les mêmes formats% s, car ces éléments sont intégrés.

Autres conseils

Voici un exemple de la manière dont vous pouvez créer votre propre printf- Fonctions de style en fa #. Vous ne pouvez pas modifier les spécificateurs de format (par exemple, "% d"), mais vous pouvez utiliser les spécificateurs existants pour créer des fonctions de formatage de chaîne supplémentaires que le compilateur saisira check.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top