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

Langage Java Discussion :

pb de syntaxe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Par défaut pb de syntaxe
    Bonjour à tous,

    Je développe en java et je suis tomber sur une syntaxe que je n'avais jamais vu avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    double result = (a>=b) ? a:b;
    Ce code est censé donner le max de (a,b)

    quelqu'un pourrait-il me dire d'ou cela sort et ce que je pourrais regarder pour me mettre à jour ?

    Merci

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,
    il s'agit de l'opérateur ternaire.
    En fait, ceci:
    est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int a;
    if (b) {
      a = c;
    } else {
      a = d;
    }
    Donc b doit être un boolean et c et d doivent être de types compatibles avec celui de a (int dans l'exemple).

    Personnellement, je ne m'en sers jamais, je trouves que cela tend à rendre le code imbuvable.

  3. #3
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Citation Envoyé par Deaf Voir le message
    Personnellement, je ne m'en sers jamais, je trouves que cela tend à rendre le code imbuvable.
    Moi j'aime bien à condition que ça reste très simple (moins d'une demi-page de largeur), ça évite une lourde syntaxe if/else sur plusieurs lignes justement.
    Bien sur il faut que la signification saute aux yeux...

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Très pratique quand tu le combine avec des String.
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Le nombre le plus grand est "+(a>b)?a:b);
    Et comme disait Jidefix, ça évite d'avoir plein de if-else et un code très lourd à lire.

    règle : (condition) ? instruction si vrai : instruction si faux

  5. #5
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Citation Envoyé par Ivelios Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Le nombre le plus grand est "+(a>b)?a:b);
    Mauvais exemple, je pense cela sera plus lisible et fera la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Le nombre le plus grand est "+Math.max(a,b));
    Après, comme je l'avais précisé, ce n'est qu'un avis personnel et je respecte les autres
    Dans l'ensemble, je préfère de loin un code aéré qu'un code compact, donc la solution du if/then/else me satisfait davantage.

    Disons que par expérience, je préfère interdire complètement une pratique que de la tolérer dans quelques rares cas, sinon il y aura toujours un membre de l'équipe pour jouer avec la limite du "lisible"

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Par défaut
    merci beaucoup c'est plus clair
    perso je préfère aussi mes if et tous

  7. #7
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Citation Envoyé par Deaf Voir le message
    Disons que par expérience, je préfère interdire complètement une pratique que de la tolérer dans quelques rares cas, sinon il y aura toujours un membre de l'équipe pour jouer avec la limite du "lisible"
    Question de point de vue j'imagine, je suis pas en position d'interdire grand chose donc je fais pis si ça va pas on me tape (mais 'tention je mord)

Discussions similaires

  1. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53
  2. Syntaxe requete
    Par Chipolata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2003, 14h22
  3. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  4. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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