Sognate di utilizzare la valutazione dei cortocircuiti, gli operatori ternari, di uscire da un ciclo o di uscire da un metodo con una semplice parola chiave?
Beh, non sognate più! Abbiamo ascoltato e tenuto d’occhio le vostre richieste di funzionalità dal Forum 4D, quindi ecco una serie di miglioramenti del linguaggio 4D che vi aiuteranno a semplificare il vostro codice.
ritorno, continuazione e interruzione
Abbiamo aggiunto 2 nuove dichiarazioni che consentono di uscire da un blocco di codice:
- La parola chiave return termina l’esecuzione del metodo o della funzione in cui compare e restituisce il controllo al metodo chiamante. Può anche restituire un valore opzionale:
function factorial ( $n : Integer) : Integer
If ($n<1)
return 1
Else
return $n*factorial($n-1)
End if
- La parola chiave break termina il ciclo che la contiene. L’istruzione eseguita è quella immediatamente successiva al corpo del ciclo:
For ($i; 1; 100)
If ($myTab{$i}="")
break
End if
End for
If ($i<101)
// your code
End if
- L’istruzione continue termina l’esecuzione delle istruzioni nell’iterazione corrente del ciclo corrente e continua l’esecuzione del ciclo con l’iterazione successiva:
For ($i; 0; 10)
If ($i=3)
continue
End if
$text+=String($i)
End for
// $text="012456789"
valutazione in cortocircuito
In un’espressione che utilizza un operatore AND o OR, una valutazione a corto circuito significa che il secondo argomento viene eseguito o valutato solo se il primo argomento non è sufficiente a determinare il valore dell’espressione. Abbiamo aggiunto due nuovi operatori per farlo:
Questo nuovo modo di scrivere gli operatori AND e OR consente di scrivere questo tipo di test in una sola riga:
if (($myColl.length>0) && ($myColl[$i]>10))
// your code
End if
Se $myColl è vuoto, il secondo argomento non viene eseguito, quindi non viene lanciato alcun errore.
Naturalmente, tutti voi avete capito che questo stile di scrittura ha l’interesse di rendere il codice più leggibile. Ma vi permette di andare oltre.
Quando si scrive expr1 && expr2 o expr1 || expr2, 4D valuta entrambe le espressioni truthy o falsy natura. I valori elencati di seguito sono considerati come falsy:
- falso
- Null
- indefinito
- Null oggetto
- Null collezione
- Null puntatore
- Null immagine
- Null data
- “” – Stringhe vuote
- [] – Raccolte vuote
- {} – Oggetti vuoti
Tutti gli altri valori sono considerati truthy.
L’operatore || restituisce la prima espressione se la prima espressione è truthyaltrimenti restituisce la seconda.
L’operatore && restituisce la prima espressione se la prima espressione è falsyaltrimenti restituisce la seconda.
Ad esempio, il codice seguente non restituisce un booleano, ma un valore numerico:
$salary:= $employee.salary || $minSalary
$employee.salary viene valutato per primo. Se il suo risultato non è Null, viene considerato come truthy e viene restituito.
Se $employee.salary è Null, e quindi falsy, viene valutata la seconda espressione($minSalario) e il suo risultato viene restituito.
Operatori di assegnazione composti
Glioperatori di assegnazione composti sono una forma semplificata di operazioni di scrittura:
- L’operatore di assegnazione di addizione (+=) aggiunge il valore dell’operando di destra a una variabile e assegna il risultato alla variabile.
$a+=5
// equals to $a:=$a+5
- L’operatore di assegnazione di sottrazione (-=) sottrae il valore dell’operando di destra da una variabile e assegna il risultato alla variabile.
$s-=5
// equals to $s:=$s-5
- L’operatore di divisione (/=) divide una variabile per il valore dell’operando di destra e assegna il risultato alla variabile.
$d/=2
// equals to $d:=$d/2
- L’operatore di assegnazione di moltiplicazione (*=) moltiplica una variabile per il valore dell’operando di destra e assegna il risultato alla variabile.
$m*=5
// equals to $m:=$m*5
Operatore ternario
Un operatore ternario è costituito da una condizione seguita da un punto interrogativo ( ? ), un’espressione da valutare se la condizione è truthy seguita da un punto e virgola ( : ). Infine, l’espressione da valutare se la condizione è falsy: condizione ? valore Se Vero : valore Se Falso
Ad esempio, è possibile scrivere:
$label:=($size>1000) ? "big" : "small"
L’operatore ternario è molto simile al comando Choose, tranne per il fatto che Choose accetta solo un’espressione booleana come condizione, mentre l’operatore ternario accetta tutti i tipi e testa i loro valori di falsy e truthy stato.
Ulteriori informazioni sono disponibili qui.