Java: Ternaire sans retour. (Pour l’appel de méthode)

Je me demandais s’il était possible de faire une opération ternaire sans rien retourner.

Si ce n’est pas possible en Java, est-ce possible dans d’autres langues, si oui lesquelles s’appliquent?

name.isChecked() ? name.setChecked(true):name.setChecked(false); 

    Non, vous ne pouvez pas. Mais quel est le but de ceci sur une déclaration if-else ? Essayez-vous vraiment de sauvegarder 7 personnages?

     if (name.isChecked()) { name.setChecked(true); } else { name.setChecked(false); } 

    ou si vous préférez le mauvais style:

     if (name.isChecked()) name.setChecked(true); else name.setChecked(false); 

    Peu importe le fait que vous pouvez juste faire (dans ce cas):

     name.setChecked(name.isChecked()); 

    L’opérateur ternaire ou “conditionnel” a pour but d’introduire des conditions dans une expression . En d’autres termes, ceci:

     int max = a > b ? a : b; 

    est censé être un raccourci pour cela:

     int max; if ( a > b ) { max = a; } else { max = b; } 

    Si aucune valeur n’est produite, l’opérateur conditionnel n’est pas un raccourci.

    Je me demandais s’il était possible de faire une opération ternaire sans rien retourner.

    Non ce n’est pas possible:

    1. Les 2ème et 3ème opérandes doivent être des expressions non vides; c’est-à-dire qu’ils doivent produire une valeur réelle.

      “Il s’agit d’une erreur de compilation pour que la deuxième ou la troisième expression d’opérande soit une invocation d’une méthode vide.” – JLS 15.25 .

    2. Une expression ternaire est une expression et ne peut être utilisée comme une déclaration.

      “Certains types d’expressions peuvent être utilisés comme instructions en les suivant par des points-virgules.” … et l’expression ternaire n’est pas une de ces sortes – JLS 14.8 .

    Si vous voulez vraiment utiliser une expression ternaire sans utiliser la valeur de l’expression, le plus simple est d’affecter la valeur à une variable factice et d’append une annotation pour supprimer l’avertissement concernant la variable non utilisée.

    Mais une meilleure idée est d’utiliser une instruction plain if .

    Si ce n’est pas possible en Java, est-ce possible dans d’autres langues, si oui lesquelles s’appliquent?

    Je suis un peu rouillé, mais je crois que C, C ++ et Perl permettent tous d’utiliser des expressions arbitraires dans des endroits où leurs valeurs ne sont pas utilisées.

    Parfois, vous pouvez utiliser une opération ternaire sur des arguments de méthode pour résoudre votre requête.

     name.setChecked(name.isChecked() ? true : false); 

    par la façon la meilleure solution pour votre problème est

     name.setCecked(name:isChecked()); 

    Vous devez retourner une valeur et celle-ci ne fonctionnera pas si vous voulez qu’elle agisse comme une méthode vide qui effectue une action sans renvoyer de valeur.

    J’espère que cela t’aides…

    En Java, le code suivant n’est pas possible:

     (your-condition) ? (true-statements) : (false-statements) 

    pour exemple, vous ne pouvez pas comstackr le code snipet suivant:

     (1==1) ? System.out.println("") : System.out.println(""); 

    vous obtenez l’erreur de compilation suivante:

     The left-hand side of an assignment must be a variable