Java Équivalent à la fonction iif
la question est simple, il y a un équivalent fonctionnel de la célèbre iif en java?
Par exemple:
IIf (vData = "S", True, False)
Merci d'avance.
JJnguy: Non,
Pour la postérité: Veuillez noter que l'on a accepté la réponse n'est pas correcte à l'égard d'un court-circuit. Lire stackoverflow.com/questions/822810/iif-equivalent-in-c à la place ...
iif
est un inline-si la fonction qui prend une valeur booléenne comme premier paramètre, et lorsque la valeur est true renvoie le deuxième paramètre, et si la valeur est false renvoie le troisième paramètre.Pour la postérité: Veuillez noter que l'on a accepté la réponse n'est pas correcte à l'égard d'un court-circuit. Lire stackoverflow.com/questions/822810/iif-equivalent-in-c à la place ...
OriginalL'auteur seba123neo | 2011-01-13
Vous devez vous connecter pour publier un commentaire.
ou dans ce cas particulier, évidemment, on pourrait simplement écrire
Ce n'est pas tout à fait la même chose. À l'aide de
IIF(x, y, z)
toujours évaluery
etz
(causer des effets secondaires des deux pour être visible), tandis quex ? y : z
ne evaulatey
xorz
(provoquant les effets secondaires d'un seul pour être visible).VB ne supporte pas de court-circuit à l'évaluation en général. Bien que VB.NET n'
Merci Adrian, toutes les réponses m'ont aidé.
OriginalL'auteur Adrian Smith
Ouais, le ternaire op
? :
OriginalL'auteur sblundy
La principale différence entre le Java opérateur ternaire et
IIf
est queIIf
évalue les deux la valeur renvoyée et le non-valeur, tandis que l'opérateur ternaire court-circuits et ne tient compte que de la valeur retournée. Si il y a des effets secondaires à l'évaluation, les deux ne sont pas équivalents.Vous pouvez, bien sûr, réimplémenter
IIf
comme statique de la méthode Java. Dans ce cas, les deux paramètres seront évalués lors de l'appel de temps, tout comme avecIIf
. Mais il n'y a pas de builtin langage Java fonctionnalité qui correspond exactement àIIf
.(À noter que la
ifTrue
etifFalse
arguments doit être du même type en Java, soit à l'aide de l'opérateur ternaire ou de l'utilisation de cette alternative générique.)Oui, c'est un autre exemple de court-circuit.
OriginalL'auteur dkarp
si est la même que la logique de l'iff.
ou
ou
EDIT: Cependant, il est assez probable que vous n'avez pas besoin d'une variable au lieu de cela, vous pouvez agir sur le résultat. par exemple,
BTW, il peut être considéré comme une bonne pratique à utiliser
La différence est vData est null le premier exemple va lever une exception, alors que le second sera fausse. Vous devez vous demander qui vous préférez arriver.
OriginalL'auteur Peter Lawrey