F# printf chaîne
Im perplexe
let test = "aString"
let callMe =
printfn test
Pourquoi n'est-ce pas de travail? Jette d'erreur ci-dessous au moment de la compilation:
Le type "chaîne" n'est pas compatible avec le type 'Printf.TextWriterFormat<'a>'
Cela fonctionne bien:
printfn "aString"
OriginalL'auteur CodeMonkey | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
C'est parce que la
format
paramètre n'est pas réellement unstring
. C'estTextWriterFormat<'T>
et le compilateur F# convertit le format de chaîne de caractères dans ce type. Mais il ne fonctionne pas surstring
variables, car le compilateur ne peut pas convertir lestring
àTextWriterFormat<'T>
au moment de l'exécution.Si vous souhaitez imprimer le contenu de la variable, vous ne devriez même pas essayer d'utiliser
printfn
de cette façon, parce que la variable peut contenir des spécifications de format.Vous pouvez soit utiliser le
%s
format:Ou utiliser le .Net
Console.WriteLine()
:N'oubliez pas d'ajouter
open System
en haut du fichier si vous souhaitez utiliser leConsole
classe.Console.WriteLine
en F#, le code n'est pas idiomatique, et laprintf
version est beaucoup plus commun.Ah ok a de sens que si le compilateur convertit, je suppose. Il a terminé avec printfn "%s" test
vous pouvez également faire
stdout.WriteLine test
où je suppose que le seul avantage est que c'est un char plus court et vous n'avez pas besoin d'ouvrirSystem
Je me demande pourquoi il n'est pas juste un print fonction qui n'est pas de mise en forme. Je suppose que ce serait facile à définir. laissez impression value = printfn "%s" valeur
OriginalL'auteur svick
En ligne avec ce que svick dit, vous pouvez également essayer ceci:
OriginalL'auteur Shawn Eary