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

Java Discussion :

multiples arguments et hash d'options


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut multiples arguments et hash d'options
    Bonjour,

    Après avoir cherché un bon moment, je crois que je mélenge tout. J'ai un problème en plusieurs étapes.

    1) Je cherche a donner en argument à une fonction plusieurs int, mais je ne sais pas a l'avance combien j'en aurai. j'ai fait un truc du genre :

    public fcn(int[] integer){}

    mais je ne sais pas trop comment l'appeler de manière correcte.

    2) Ensuite, l'étape deux, je cherche à donner a une fonction une sorte de hash d'option. du genre fcn({-clef=> value}) mais je ne sais pas vriament s'il existe quelque chose comme ca en java...

    Est-ce que quelqu'un a un éclaircicement ? meme partiel ?

    Merci d'avance...

  2. #2
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    pOUR ta déclaration de fonction je trouve ca correct si ce n'est qu'il faut rajouter ce qu'il retourne (ici j'ai mis rien : void):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void fcn(int[] integer){
       System.out.println("j'ai "+integer.length+" élément dans mon tableau");
    }
    Et quand tu appels ta methode tu peux faire (exemple très basic):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int[] tabInt = new int[]{1,2,3,4};
    fcn(tabInt);

    Pour ton 2ieme probleme, il y a le type HashMap qui permet d'avoir X couples (clé, valeur).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HashMap h = new HashMap();
    h.put("cle1", "mavalue");
    h.put("cle2", "mavalue2");

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    Super, clair et limpide, je met résolu.

    Pour ma culture, ca se fait de faire des hash d'options comme ca en java ?

  4. #4
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Bonjour,

    A noter que pour ton premier problème, tu peux utiliser l'ellipse depuis Java 5 .

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par mauroyb0
    1) Je cherche a donner en argument à une fonction plusieurs int, mais je ne sais pas a l'avance combien j'en aurai. j'ai fait un truc du genre :

    public fcn(int[] integer){}

    mais je ne sais pas trop comment l'appeler de manière correcte.
    Tout simplement de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fcn( new int[]{ 0, 1, 2, 3, 4, 5 } );
    A noter que si tu utilises Java 5.0 tu peux utiliser l'ellipses :
    Pour cela il faut définir ta méthode de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public void fcn(int...integers) {
     
    	}
    Et le paramètre integers correspond à un tableau.

    Plus d'info : [Java 5.0] Comment fonctionne l'ellipse (nombre d'arguments variable) ?



    Citation Envoyé par mauroyb0
    2) Ensuite, l'étape deux, je cherche à donner a une fonction une sorte de hash d'option. du genre fcn({-clef=> value}) mais je ne sais pas vriament s'il existe quelque chose comme ca en java...
    Non cela n'existe pas dans le langage, mais il y a moyen de faire quelque chose de relativement proche.

    Si ta méthode doit prendre en compte n'importe quel type d'option, le plus simple serait de lui passer une Map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Map options = new HashMap();
    options.put("nom1", valeur1);
    options.put("nom2", valeur2);
    // etc. 
    fnc( options );

    Mais si ta méthode doit prendre un nombre limité de valeur, tu peux utiliser une classe pour la configurer plus simplement, en utilisant des méthodes "setter" qui renvoient la référence à this afin de chainer les appels, par exemple :
    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
    public class Option {
     
    	String clef;
    	Date date;
     
    	public Option clef(String clef) {
    		this.clef = clef;
    		return this;
    	}
     
    	public Option date(Date date) {
    		this.date = date;
    		return this;
    	}
     
    }
    Que tu utilises de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fnc( new Option().date(new Date()).clef("valeur") );
    a++

    [edit] je me suis bien fait grillé sur ce coup là

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

Discussions similaires

  1. No argument to 'scan_type' conf option.
    Par brino1987 dans le forum Windows
    Réponses: 0
    Dernier message: 03/04/2013, 02h24
  2. Réponses: 2
    Dernier message: 02/07/2012, 09h18
  3. Optparse, passer plusieurs fichiers en arguments d'une même option
    Par michel42 dans le forum Général Python
    Réponses: 13
    Dernier message: 05/04/2012, 09h35
  4. LinkButton et multiples arguments
    Par vodasan dans le forum ASP.NET
    Réponses: 2
    Dernier message: 27/03/2009, 14h30
  5. Réponses: 4
    Dernier message: 16/02/2007, 11h51

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