IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Match with ocaml


Sujet :

Caml

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut Match with ocaml
    Bonjour à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let f1 (longueur:int) (posj:int) = match longueur with 
      posj -> print_string "bonjour"
      |_ -> print_string "à demain";;
     
    Warning U: this match case is unused.
        |_ -> print_string "à demain";;
    je ne comprend pas pourquoi j' ai ce message...

    Merci.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Snyper Voir le message
    Bonjour à tous,

    let f1 (longueur:int) (posj:int) = match longueur with
    posj -> print_string "bonjour"
    |_ -> print_string "à demain";;

    Warning U: this match case is unused.
    |_ -> print_string "à demain";;

    je ne comprend pas pourquoi j' ai ce message...

    Merci.


    De plus, tu es gentil de ne pas écrire à tous le monde en MP !
    La prochaine fois ne compte pas sur moi.

    Il t'explique quel est l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    this match case is unused.
        |_ -> print_string "à demain";;
    Ne lis tu pas l'anglais ?
    Pourrais tu me dire, en mots, pour quelles valeurs de longueur et de posj ta fonction f1 affiche-t-elle "a demain" ??

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut match with ocaml
    et bien pour longueur = posj -> bonjour pour une autre valeur á demain enfin je crois....

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Non, posj est une nouvelle variable, différente de l'argument posj, et qui filtre n'importe quelle valeur.

    Ton expression match est équivalente à l'expression:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let posj = longueur in print_string "bonjour"
    Si tu veux faire un test d'égalité alors une expression if...then...else... fait très bien l'affaire.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    alex_pi
    Invité(e)
    Par défaut
    Quand tu mets un nom de variable dans le schéma d'un "match", il considère que tu veux lier la valeur trouvée à cette endroit à cette variable. Par exemple dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    let pair = (4,2) in
      match pair with 
        | (i, j) -> ....
    quand tu es dans les pointillés, i vaut 4 et j vaut 2, même si les noms i et j avaient déjà été utilisé avant.

    Donc dans ton exemple, le premier schéma lie systématiquement la valeur longeur à la variable posj

    Les seuls moment où un match fait un test d'égalité, c'est quand tu as une valeur imédiate, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    match foo with 
      | 0 -> ...
      | 1 -> ...
      |_ -> ...
    if then else est donc ton ami :-)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut Merci
    Merci pour les réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'utilisation de match ~ with
    Par Yakka dans le forum Caml
    Réponses: 6
    Dernier message: 20/10/2011, 16h14
  2. Réponses: 2
    Dernier message: 13/07/2009, 01h00
  3. Probleme match with.
    Par Tibapbedoum dans le forum Caml
    Réponses: 2
    Dernier message: 20/05/2009, 23h27
  4. Type unit, type string, match with
    Par lioudow dans le forum Caml
    Réponses: 8
    Dernier message: 12/02/2007, 17h12
  5. Réponses: 7
    Dernier message: 07/07/2006, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo