Differenze tra le versioni di "Iif()"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 1: Riga 1:
'''iif( <test>, <true>, <false> )'''
+
'''<destinazione> = iif( <condizione>, <valore_se_vero>, <valore_se_falso> )'''
  
Traduzione in funzione delle istruzioni *[[IF...THEN...ELSE...ENDIF]]
+
Traduzione in funzione delle istruzioni [[IF...THEN...ELSE...ENDIF]].
 +
 
 +
La funzione valuta l'espressione contenuta nel primo parametro (<condizione>), che può essere un qualsiasi tipo di confronto tra variabili o valori di ogni tipo, e ritorna il valore impostato nel secondo parametro (<valore_se_vero>), altrimenti ritorna il terzo valore (<valore_se_falso>).
 +
A differenza da alcune precedenti versioni, i tre parametri sono tutti obbligatori, e devono ritornare dati di tipo corrispondente o accettato dalla variabile di destinazione.
 +
 
 +
Esempio:
 +
----
 +
  DIM var AS String = Iif( "ABC" = "CBA", "Uguale", "Diverso" )
 +
  ...
 +
  DIM num AS Integer = 10
 +
  DIM var AS Integer = Iif( num > 10, 10, num )
 +
  ...
 +
----
 +
 
 +
E' possibile annidare più funzioni di test, in modo da simulare più istruzioni "IF...ELSE...ELSE IF...ENDIF":
 +
----
 +
  DIM codice AS String = "IT"
 +
  DIM nazione AS String = Iif( test = "IT", "Italia", Iif( test = "FR", "Francia", Iif( test = "ES", "Spagna", "Non valido")))
 +
----
 +
Nell'esempio viene ritornato il nome della nazione, corrispondente al valore contenuto nella variabile codice; nel caso specifico, l'istruzione si fermerà alla prima IIF, ritornando la stringa "Italia". Nel caso questo non sia vero, il test verrà effettuato dalla successiva IIF in cascata; se tutte le verifiche non soddisferanno i requisiti, verrà ritornata l'ultima stringa <false> dell'ultima istruzione di test.
 +
 
 +
Sfruttando la possibilità in Gambas, di continuare un'istruzione su più righe, si può scrivere il codice dell'esempio nel modo seguente (ricordando che in questo caso è la virgola che lega le varie righe):
 +
----
 +
  DIM codice AS String = "IT"
 +
  DIM nazione AS String = Iif( test = "IT", "Italia",
 +
                          Iif( test = "FR", "Francia",
 +
                          Iif( test = "ES", "Spagna", "Non valido")))
 +
----
 +
 
 +
'''Nota''': l'utilizzo di questa funzione, in particolare nell'esecuzione di verifiche multiple (come da ultimo esempio), deve essere valutata attentamente, per non incorrere in problemi di leggibilità del codice. Di norma l'usa è limitato al test di una singola condizione, e permette di scrivere meno codice, rispetto alle istruzioni pure IF...ENDIF.

Versione attuale delle 02:06, 1 apr 2009

<destinazione> = iif( <condizione>, <valore_se_vero>, <valore_se_falso> )

Traduzione in funzione delle istruzioni IF...THEN...ELSE...ENDIF.

La funzione valuta l'espressione contenuta nel primo parametro (<condizione>), che può essere un qualsiasi tipo di confronto tra variabili o valori di ogni tipo, e ritorna il valore impostato nel secondo parametro (<valore_se_vero>), altrimenti ritorna il terzo valore (<valore_se_falso>). A differenza da alcune precedenti versioni, i tre parametri sono tutti obbligatori, e devono ritornare dati di tipo corrispondente o accettato dalla variabile di destinazione.

Esempio:


 DIM var AS String = Iif( "ABC" = "CBA", "Uguale", "Diverso" )
 ...
 DIM num AS Integer = 10
 DIM var AS Integer = Iif( num > 10, 10, num )
 ...

E' possibile annidare più funzioni di test, in modo da simulare più istruzioni "IF...ELSE...ELSE IF...ENDIF":


 DIM codice AS String = "IT"
 DIM nazione AS String = Iif( test = "IT", "Italia", Iif( test = "FR", "Francia", Iif( test = "ES", "Spagna", "Non valido")))

Nell'esempio viene ritornato il nome della nazione, corrispondente al valore contenuto nella variabile codice; nel caso specifico, l'istruzione si fermerà alla prima IIF, ritornando la stringa "Italia". Nel caso questo non sia vero, il test verrà effettuato dalla successiva IIF in cascata; se tutte le verifiche non soddisferanno i requisiti, verrà ritornata l'ultima stringa <false> dell'ultima istruzione di test.

Sfruttando la possibilità in Gambas, di continuare un'istruzione su più righe, si può scrivere il codice dell'esempio nel modo seguente (ricordando che in questo caso è la virgola che lega le varie righe):


 DIM codice AS String = "IT"
 DIM nazione AS String = Iif( test = "IT", "Italia", 
                         Iif( test = "FR", "Francia", 
                         Iif( test = "ES", "Spagna", "Non valido")))

Nota: l'utilizzo di questa funzione, in particolare nell'esecuzione di verifiche multiple (come da ultimo esempio), deve essere valutata attentamente, per non incorrere in problemi di leggibilità del codice. Di norma l'usa è limitato al test di una singola condizione, e permette di scrivere meno codice, rispetto alle istruzioni pure IF...ENDIF.