Uno strumento utile per manipolare gli output booleani, il ! (NOT) operatore in JMP può avere anche altre applicazioni utili, ad esempio l'utilizzo con Contiene() nel messaggio <
Per prima cosa chiariamo che stiamo discutendo dell'uso di ! come un operatore e non come lo strumento sintattico utilizzato in sequenze di fuga nelle stringhe tra virgolette; in questi casi non assume il significato di NOT.
Puoi pensare! come qualsiasi altro operatore nel JMP. Probabilmente hai familiarità con quelli più comuni: Aggiungi (+), Sottrai (-), Moltiplica (*), Dividi (/), ecc. In senso generale, un operatore è un simbolo di uno o due caratteri utilizzato per eseguire azioni aritmetiche comuni, confrontare valori, costruire elenchi, inserire pedici in un elemento di dati, inviare messaggi, concatenare elenchi, nomi di ambiti, espressioni di colla ed espressioni finali. .
IL ! (spesso indicato come carattere "bang") in JMP viene utilizzato nel codice JSL come operatore per indicare un NOT logico, il che significa, nel contesto dei valori booleani (vero o falso), che mappa diverso da zero (o vero ) su 0 (che significa falso) e mappa i valori 0 (0 o falso) su 1 (che significa vero).
Ecco alcuni semplici esempi del suo utilizzo:
Esempio 1:
x = 1;
!x;
//LOG RESULT: 0
Esempio 2:
x = 0;
!x;
//LOG RESULT: 1
Esempio 3:
!(1 < 2);
//LOG RESULT: 0
Quando lo raggruppi con altri operatori, puoi considerarlo come appartenente ad altri operatori “logici” come OR (|) e AND (&), che vengono generalmente utilizzati nelle istruzioni If().
Esempio 1:
x = 4;
//Check if x is NOT equal to 2 or 3
If( x != 2 & !(x == 3),
Show("Not Equal to 2 or 3"),
Show("Equal to 2 or 3")
);
//LOG RESULT: "Not Equal to 2 or 3"
Nota: nota qui che puoi affermare NOT Uguale con != o aggiungendo ! prima dell'intera espressione di uguaglianza, ad esempio !(x==3).
Esempio 2:
str = "hello world";
//Check if str does NOT contain the letter "o"
If (!Contains(str,"o"),
Show("Does not contain o"),
Show("Contains o")
);
//LOG RESULT: "Contains o"
Ci sono molte situazioni in cui potrebbe essere utile usare ! dove non è limitato alle istruzioni If() come sopra. Abbiamo visto un esempio di utilizzo di ! con Contiene(), ma andiamo un po' oltre. Un uso classico di Contiene() è nel contesto di un messaggio << Select Where(), come dimostrato in questo esempio:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//Select Rows in the table that do not contain the letter "A" for :name column
<FONT color="#000000">dt << Select Where (!Contains(:name, "A"));
</FONT>
Questo è lo stesso di
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//Select Rows in the table that do not contain the letter "A" for :name column
dt << Select Where (Contains(:name, "A")==0);<BR />
La prima istruzione "Seleziona dove" sopra corrisponde all'output che vedresti se seguissi il file Righe finestra nell'interfaccia utente, navigata Selezione riga --> Seleziona dove ... e quindi seleziona l'opzione dal menu a discesa nella finestra di dialogo "non contiene".

Come puoi vedere dall'esempio sopra, l'uso di ! può rendere il codice più conciso e leggibile; funziona meglio anche quando vuoi combinare le istruzioni nei tuoi messaggi <
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//Select Rows in the table that do not contain the letter "A" and "E", and contain letter "I"
dt << Select Where (!Contains(:name, "A") & !Contains(:name,"E") & Contains(:name, "I"));
L'operatore NOT ha molte applicazioni utili in JSL, quindi provalo nel tuo codice. Naturalmente, non esitate a contattare il supporto tecnico JMP in caso di problemi o domande!