Controlla se una variabile o una espressione ha cambiato il suo valore rispetto all'analisi precedente.
Sintassi |
i32 diff (var) |
||||||
---|---|---|---|---|---|---|---|
var |
Parametro da controllare. Deve essere di tipo numerico (i8, i16, i32, u8, u16, u32, float, real) o booleano (espressione logica). |
||||||
Risultato |
Rende:
|
||||||
Validità |
Rule, Task. |
||||||
Note |
La prima volta che viene eseguita, la funzione rende FALSE e memorizza lo stato attuale della condizione. Nel caso si utilizzi diff() in una funzione R3 utente, va evitato che i parametri della funzione stessa siano coinvolti nell'espressione di "condizione". Il risultato non sarebbe quello sperato a causa della sovrapposizione in memoria dello stato di più variabili. |
Ogni istruzione di diff() ha la propria memoria dello stato della "condizione".
La valutazione del fronte è fatta tra lo stato attuale della condizione e la memoria relativa alla singola chiamata della funzione.
Per esempio, se abbiamo allo step 1000 if(diff(inp(1))) e allo step 1100 if(diff(inp(1))), benchè facciano riferimento alla stessa condizione, le valutazioni sono fatte in modo distinto, ognuna in base allo stato memorizzato, eseguendo step 1000 e poi step 1100.
Esempio di utilizzo:
|