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

avec Java Discussion :

Traduire en langage humain une ligne un peu ésotérique


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 128
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 128
    Par défaut Traduire en langage humain une ligne un peu ésotérique
    Bonjour,

    Je suis totalement newbie en Java, et j'ai une ligne dans un programme (assez simple au demeurant) que je n'arrive pas à comprendre :
    soit une variable "r" déclarée en double et à laquelle un calcul attribue une valeur.

    Que veux dire cette ligne, qui arrive après le calcul :
    J'aurais dit si r est inférieur à 0 alors r est forcé à 0, mais je préfère avoir confirmation de quelqu'un qui connaît, parce que je ne vois pas à quoi sert ": r" dans la fin de la ligne.

    L'opération ternaire :
    si le test renvoie true, la valeur qui se trouve après le ? sera affectée, sinon la valeur après le : sera affectée.
    En français, si r est inférieur à 0 alors r est forcé à 0 sinon r est forcé à r et je ne vois pas pourquoi puisque r contient déjà la bonne valeur...

    En Pascal (":=" c'est l'affectation, pour ceux qui ne connaîtraient pas) j'aurais dit if (r < 0) then r := 0; et basta.

    Grand merci par avance,

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    C'est tout à fait ça, et ça s'appelle l'opérateur ternaire. Faire un if/else sur une seule ligne.

    Mais c'est moche, on peut faire r = Math.max(0, r); qui se lit mieux

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    L’opérateur ternaire étant l’équivalent, avec affectation, d'un if then {} else {} on est obligé de fournir une valeur pour le else même si elle semble idiote ici.
    Le max se lit mieux bien sur MAIS c'est un appel de méthode donc si on cherche la performance (jeux, etc.), l'utilisation de l'instruction ternaire peut très bien se comprendre.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 128
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 128
    Par défaut
    Citation Envoyé par bouye Voir le message
    L’opérateur ternaire étant l’équivalent, avec affectation, d'un if then {} else {} on est obligé de fournir une valeur pour le else même si elle semble idiote ici.
    C'est bien ça qui m'a perturbé, d'où ma question ici.
    Mais en Java, un bête if (r < 0) {r = 0}; (en adaptant la syntaxe si je me suis trompé, encore une fois je suis archi newbie et ma question était pour comprendre un code qui fait par ailleurs ce que je veux -- just curious, quoi), ça n'était pas possible ?

    Merci à vous deux.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Oui mais c'est considéré comme "moche" (pour le coup vraiment pas lisible donc), la pratique courante (même si le monde ne la suit pas bien entendu) étant d’écrire le if comme un bloc sur plusieurs lignes car car on suit le style Kernighan & Ritchie (on met un retour chariot apres le {) :

    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. [DOM][langage ???]insérer une ligne dans un xml
    Par atchoumen dans le forum APIs
    Réponses: 1
    Dernier message: 03/08/2007, 13h32
  2. [langage] supprimer une ligne
    Par helene22500 dans le forum Langage
    Réponses: 2
    Dernier message: 25/05/2005, 10h27
  3. [langage] Sauter une ligne en ecrivant dans un fichier
    Par mickey02 dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2005, 18h02
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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