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 :

Probleme match with.


Sujet :

Caml

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par défaut Probleme match with.
    Bonjour,
    Voila, j'aimerais ecrire cela en OCaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    (*Creation de deux tableaux de 4 cases.*)
    let valeurs = Array.make 4 0. ;;
    let etapes = Array.make 4 "" ;;
     
    (*
     * Rajoute 0.025 a la valeur contenue dans la case de nom "name".
     * La 1ere ligne du match est ce que j'aimerais realiser, les autres sont celles 
     * qui marchent...
     *)
    let writeTime (name)=
      match name with
          etapes.(0) -> valeurs.(0) <- valeurs.(0) +. 0.025;
        | "Reconstruction" -> valeurs.(1) <- valeurs.(1) +. 0.025;
        | "Abstraction" -> valeurs.(2) <- valeurs.(2) +. 0.025;
        | "Check" -> valeurs.(3) <- valeurs.(3) +. 0.025;
        | _ -> Printf.printf "argument non pris en compte\n";;
     
    (*Initialise le tableau et appelle la fonction writeTime*)
    let tableau name = 
      (*Initialisation du tableau*)
      etapes.(0) <- "Elaboration";
      etapes.(1) <- "Reconstruction";
      etapes.(2) <- "Abstraction";
      etapes.(3) <- "Check";
     
      writeTime (name)
    Je sais que match ne marche qu'avec des motifs, et par consequent, je comprend d'ou vient l'erreur affichee par mon terminal. Cependant, n'y aurait-il pas un moyen de faire quelque chose comme ca, peut etre en utilisant autre chose que match ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    match name with
          etapes.(0) -> valeurs.(0) <- valeurs.(0) +. 0.025;
    J'ai cherche, mais sans reussite. Je m'en remet donc a vous une fois de plus...
    Merci.
    -Tibap

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tu peux utiliser une garde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    match name with
          n when n = etapes.(0) -> valeurs.(0) <- valeurs.(0) +. 0.025;
    --
    Jedaï

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let write_time name =
      Array.iteri (fun i etape -> if etape = name then valeurs.(i) <- valeurs.(i) +. 0.025) etapes

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

Discussions similaires

  1. problem occurred with eclipse
    Par xoum89 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 02/11/2009, 23h16
  2. Match with ocaml
    Par Snyper dans le forum Caml
    Réponses: 5
    Dernier message: 15/01/2008, 20h47
  3. Type unit, type string, match with
    Par lioudow dans le forum Caml
    Réponses: 8
    Dernier message: 12/02/2007, 17h12
  4. 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