J'aimerais savoir quelle est la meilleure solution pour créer un menu simple avec une fonctionnalité décrite ci-dessous (pseudo code) comme si j'étais habitué à: ou peut-être toutes les autres idées sur Comment faire un menu non dans le motif décrit ci-dessus? p> p>
3 Réponses :
quelque chose comme vous pouvez probablement diviser l'énumération dans "choix" afin que vous ne disposez que des descriptions et des fonctions à l'intérieur, un peu de séparation, mais cela fonctionne. L'évaluation de la fonction "Menu" vous permettra de choisir quoi faire! P> P>
si facile :) Une autre question: Pourriez-vous expliquer la première ligne: (putsrtln .....) im Newbie à Haskell et ne savez pas que les opérateurs aiment. $ et ainsi de suite. Si ce n'est pas un problème pour vous, cela m'aiderait.
Je viens de modifier ma réponse et je l'ai rendue plus flexible! Pas testé de quelque manière que je viens de l'écrire, mais vous devriez voir ce que j'ai fait là-bas :). À propos de cette ligne PutStrln: J'ai essentiellement écrit "PutStrln (mal énumère (cartographier les choix de Concatnums))" sans les paranthèses :)
Ouf, je ne peux tout simplement pas poster des pièces de code incomplètes - une vérification supplémentaire pour une entrée non numérotée et une entrée hors limites :)
Il y a quelques paquets frais pour des méthodes de haut niveau pour construire des systèmes de ligne de commande en général: P>
J'aime particulièrement la commande ui, car il s'agit d'un cadre complet pour vos outils de ligne de commande: il envoie aux fonctions de gestionnaire que vous fournissez à chaque commande et fournit également une aide spécifique à la commande à l'utilisateur. P>
Le but est un sentiment poli, plutôt qu'un sentiment pirateux. P>
Bonjour, merci de l'aide, après avoir téléchargé ce package UI-Command et Alldependances lorsque je tente de compiler l'exemple, j'ai une erreur: Impossible de trouver le module `Control.monad.Trans ': il a été trouvé dans plusieurs packages: MONADS-FD-0.1. 0.1 MTL-1.1.0.2 Comment puis-je résoudre ce problème?
Vous aurez besoin de désinscrire des monads-fd je pense. GHC-PKG Unregister monads-fd.
Voici un autre exemple qui est un peu plus de menu, en ce sens qu'il lit directement des caractères simples dans Réactions, sans demander à l'utilisateur d'appuyer sur ENTER.
import System.IO import System.Exit import Control.Monad main = forever (printMenu >> readChoice >>= menuAction) printMenu = putStr "\np)rint 'Hello, world!'\ne)xit\nyour choice: " >> hFlush stdout readChoice = hSetBuffering stdin NoBuffering >> hSetEcho stdin False >> getChar menuAction 'p' = putStrLn "\nHello, world!" menuAction 'e' = exitSuccess menuAction _ = hPutStrLn stderr "\nInvalid choice."