La question est simple, il existe un équivalent fonctionnel de la célèbre IIF en Java?
Par exemple: P>
IIf (vData = "S", True, False)
4 Réponses :
Ouais, le Ternary Op ? : code>
vData.equals("S")
surtout b> le deuxième bit. Ce n'est pas si évident pour beaucoup de gens.
Ce n'est pas tout à fait la même chose. En utilisant iif (x, y, z) code> évaluera toujours y code> et z code> (provoquant des effets secondaires de la fois visible), tandis que < code> x? Y: z code> n'évaulement que y code> xor z code> (provoquant uniquement les effets secondaires d'un seul à être visible).
@Gabe: VB ne prend pas en charge l'évaluation de court-circuit en général. Bien que vb.net fait
Merci Adrian, toutes les réponses m'a aidé.
Si est identique à l'IFF logique.
if ("S".equals(vData)) {
La principale différence entre l'opérateur ternaire Java et Vous pouvez, bien sûr, réimplément (Notez que le iif code> est que iif code> évalue à la fois forte> la valeur renvoyée et la valeur non retardée, tandis que le ternaire Les courts-circuits de l'opérateur et n'évaluent que la valeur renvoyée. S'il y a des effets secondaires à l'évaluation, les deux ne sont pas équivalents. iif code> en tant que méthode Java statique. Dans ce cas, les deux paramètres seront évalués au temps d'appel, tout comme avec iif code>. Mais il n'y a pas de fonctionnalité de langue java intégrée qui équivaut exactement à iif code>. P> iftrue code> et < Code> iffalse code> arguments doit être du même type en Java, en utilisant l'opérateur ternaire ou en utilisant cette alternative générique.) p> p> p>
Merci, je comprends, semblable à la fonction AndelSo, Orelse dans VB Net, non?
Oui, c'est un autre exemple de court-circuit.
Janguy: non,
si code> est une fonction inline-si elle prend une valeur booléenne comme premier paramètre, et lorsque True renvoie le deuxième paramètre, et lorsque FAUX renvoie le troisième paramètre.Pour la postérité: Veuillez noter que la réponse acceptée n'est pas réellement correcte en ce qui concerne le court-circuit. Lire Stackoverflow.com/questions/822810/iif-equivalent-in-c à la place ...