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

F# Discussion :

Boucle For en F#


Sujet :

F#

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Novembre 2006
    Messages : 79
    Points : 54
    Points
    54
    Par défaut Boucle For en F#
    Bonjour,

    Je voudrais traduire en F# cette boucle écrite en C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int i = 0;
    byte[] tabAdresseIP = new byte[4];
     
    foreach(string chainonIP in str.Split('.'))
                {
     
                    tabAdresseIP[i]= Convert.ToByte(chainonIP);
                    i++;
                }
    Merci

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Une traduction littérale (déconseillée) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     let mutable i = 0
     let tabAdresseIP = Array.zero_create 4
     for chainonIP in str.Split([|'.'|]) do
        tabAdresseIP.[i] <- Convert.ToByte(chainonIP)
        i <- i + 1
    Le problème de ce code, c'est que l'on fait des mutations inutiles de variables. La création d'un tableau non initialisé est dangereux (une alternative un poil plus jolie est "Array.create 4 0uy"). L'accès direct au tableau est aussi à éviter : il y a toujours un risque d'inattention et d'accès à un élément hors tableau.

    Une approche plus idiomatique et plus propre est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    let tabAdresseIP = str.Split([|'.'|]) |> Array.map byte
    Autre possibilité, si tu n'es pas habitué à map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [|for b in str.Split([|'.'|]) -> byte b|]
    Au final, c'est plus court, plus sûr et plus lisible que le code initial.

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

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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