Comment lire la saisie de l'utilisateur à l'aide de f# interactive dans visual studio?
Donc je suis en train de faire quelque chose de simple:
printfn "Enter a number:"
try
let x = System.Console.ReadLine();
Some(int32(x))
with
| :? System.FormatException -> printfn "Invalid number!"
Some(0)
Je veux imprimer le message, puis la mettre à l'utilisateur de saisir un nombre, et d'essayer de les convertir en int et de le retourner.
Si je viens de compiler le code (en tapant fsc a3.fs sur la ligne de commande), il fonctionne très bien. Il s'arrête, attend d'entrée, puis revient Quelques(int).
Si je l'ai copier et coller le code dans le FSI sur la ligne de commande, il fonctionne très bien.
Mais quand je suis dans visual studio, et j'exécute le code dans le FSI (mettre en surbrillance + alt+entrée), il va tout droit sur l'entrée de la partie et l'exception est levée (et pris).
Voici le résultat quand je le lance dans le FSI (dans visual studio):
Enter a number:
Invalid number!
0
Comme vous pouvez le voir, Cela ne marche jamais fait de pause et d'attente pour moi à l'entrée.
Quelqu'un sait comment faire ce travail?
Merci!
OriginalL'auteur Toadums | 2011-11-05
Vous devez vous connecter pour publier un commentaire.
F# Interactive de la console dans Visual Studio ne prend pas en charge la lecture de l'entrée, il n'existe aucun moyen de demander pour l'entrée de la console. Si vous utilisez le code de manière interactive, vous pouvez toujours saisir l'entrée dans l'éditeur, donc, la meilleure solution est d'avoir
let
de liaison au début où vous entrez dans l'entrée avant l'exécution de votre code. Vous pouvez utiliser#if
à l'appui de deux scénarios:"Le F# Interactive de la console..." et "...et ne prend pas en charge la lecture de l'entrée..." sont tout simplement trop 😀
OriginalL'auteur Tomas Petricek
Si vous ouvrez F# interactive comme son propre processus (en exécutant directement
fsi.exe
, le code fonctionne - voici ce qui m'est arrivé:OriginalL'auteur John Palmer
Essayer ci-dessous, il fonctionne très bien sur ma machine (VS 2013, F# 3.1 12.0.21005.1)
OriginalL'auteur AlexZenadi
Dans Visual Studio pour la Communauté Mac, 7.4 (build 1033), j'ai aussi rencontré ce problème lors de la compilation et de l'exécution des fichiers source, pas de scripts.
Si j'utilise la console intégrée (il apparaît à côté de la fenêtre de sortie), je ne peux pas lire la saisie à l'aide du Système.Console.ReadLine().
Lorsque je passe à l'extérieur de la console en cochant la case "Exécuter en externe sur la console la case" par Défaut dans la Configuration d'Exécution du Projet (project -> Options -> Exécuter:Configurations:par Défaut), je suis capable de lire l'entrée.
OriginalL'auteur downeyt