Domanda

La questione è semplice, c'è un equivalente funzionale del famoso IIF in java?

Ad esempio:

IIf (vData = "S", True, False)

Grazie in anticipo.

È stato utile?

Soluzione

vData.equals("S") ? true : false

o in questo caso particolare ovviamente uno potrebbe semplicemente scrivere

vData.equals("S")

Altri suggerimenti

Si, il ternario op ? :

vData.equals("S") ? true : false

La differenza principale tra l'operatore ternario Java e IIf è che valuta IIf sia il valore restituito e il valore unreturned, mentre l'operatore ternario cortocircuiti e valuta solo il valore restituito. Se non ci sono effetti collaterali per la valutazione, i due non sono equivalenti.

È possibile, naturalmente, reimplementare IIf come un metodo Java statico. In questo caso, entrambi i parametri saranno valutati in fase di chiamata, proprio come con IIf. Ma non v'è incorporato caratteristica del linguaggio Java che equivale esattamente a IIf.

public static <T> T iif(boolean test, T ifTrue, T ifFalse) {
    return test ? ifTrue : ifFalse;
}

(Si noti che le ifTrue e ifFalse argomenti deve essere dello stesso tipo in Java, sia utilizzando l'operatore ternario o usando questo generico alternativa.)

se è la stessa della logica se e solo se.

boolean result;
if (vData.equals("S"))
   result = true;
else
   result = false;

o

boolean result = vData.equals("S") ? true : false;

o

boolean result = vData.equals("S");

EDIT: Tuttavia la sua molto probabile non è necessario una variabile invece si può agire sul risultato. per es.

if (vData.equals("S")) {
   // do something
} else {
   // do something else
}

A proposito può essere considerata una buona pratica per l'uso

 if ("S".equals(vData)) {

L'essere differenza che è vData è nullo il primo esempio sarà un'eccezione mentre il secondo sarà falso. Dovresti chiederti che si preferisce che accada.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top