Autore Topic: IIF(1>2, 1/0, 0)  (Letto 1101 volte)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
IIF(1>2, 1/0, 0)
« il: 21 Agosto 2014, 15:52:36 »
Avete mai provato la funzione IIF?

IIF(Espressione, Se Vero, Se Falso)

Bene mi sono trovato questo piccolo bug:

IIF(1>2, 1/0, 0)
Error: Division by zero

è come se gambas dovesse comunque risolvere le due condizioni e poi successivamente, in base all'espressione, ritorna il valore se vero/se falso...

Adesso io non so se è normale, ma per il mio modo di ragionare è sbagliato.
Infatti se fate in questo modo:

If 1 > 2 Then
  Return 1/0
Else
  Return 0
EndIf


è logico che mi va a processare Else.

Capita anche a voi?

Aggiungo anche che utilizzo Gambas3 Versione 3.5.3 installata da repository nemh-gambas3-trusty

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: IIF(1>2, 1/0, 0)
« Risposta #1 il: 21 Agosto 2014, 18:26:19 »
Capita anche a me.

Ad ogni modo, leggo dalla guida on line:
" Attenzione! Agire con CAUTELA! Contrariamente agli operatori IF, o ? del C/Perl, sia EspressioneVera che EspressioneFalsa sono entrambi valutati qualunque sia il valore di Test. "

Pertanto sembra essere un comportamento voluto.  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: IIF(1>2, 1/0, 0)
« Risposta #2 il: 21 Agosto 2014, 21:33:05 »
Allora non si tratta di bug...

Lo uso di rado,  mo d'ora in poi cercherò di usarlo sempre meno...

Grazie vuott.   :ciao: