Valutatore di espressioni
Calcolare il risultato di un'espressione con numeri interi e decimali, variabili di tipo numerico, variabili di tipo stringa (solo per confronti tra stringhe), operatori aritmetici e booleani e un insieme di funzioni.
Proprietà
Proprietà | Descrizione |
---|---|
Espressione | L'espressione da calcolare. L'espressione può contenere un numero illimitato di parentesi, aperte e chiuse correttamente. Se l'espressione non segue la sintassi corretta, il convertitore non eseguirà il calcolo. |
Modalità | La direzione del collegamento dinamico:
|
Sorgente
Una o più variabili identificate da:
- Segnaposto{index_number}
- Numero intero progressivo uguale o maggiore di zero. Ad esempio,{1}
- Segnaposto{#placeholder_identifier}
- Stringa con prefisso#. Ad esempio,{#speed}
SUGGERIMENTO:
Utilizzare qualsiasi combinazione di segnaposto in qualsiasi ordine. Utilizzare un numero qualsiasi di segnaposto nell'espressione.
Valori letterali
- Boolean.
- Numeri interi.
- Numeri decimali, con il punto come separatore.
- Numeri esadecimali con il prefisso0x.
- Testo, ad esempio una stringa delimitata da virgolette doppie.SUGGERIMENTO: Due virgolette doppie ("") vengono interpretate come sequenza di escape.
- Data e ora. Ad esempio2017-06-28T15:26:06.0790910.
Operatori
Categoria | Operatore | Associatività | Commenti |
---|---|---|---|
Unario | Unario meno: - Bit per bit NOT: ~ Operatore cast: (type) | Da destra a sinistra | L'operatore cast (type) si applica solo a tutti i tipi di dati numerici e booleani. |
Moltiplicativo | * ,/ , % | Da sinistra a destra | |
Additivo | + , - | Da sinistra a destra | |
Shift | << , >> | Da sinistra a destra | Gli operatori di shift e relazionali si applicano ai seguenti tipi di dati:
|
Relazionale | < , <= , > , >= | Da sinistra a destra | |
Uguaglianza | == , != | Da sinistra a destra | Gli operatori di uguaglianza si applicano a questi tipi di dati:
|
Bit per bit AND, XOR, OR | & , ^ , | | Da sinistra a destra | |
Logico AND | && | Da sinistra a destra | |
Logico OR | || | Da sinistra a destra |
Tipi di dati
Convenzioni sul tipo di dati nel valutatore di espressioni:
- I numeri interi letterali sono Int32.
- I valori decimali letterali sono Double.
- I valori numerici sono considerati Int32.
- I valori letterali Vero e Falso vengono interpretati come Boolean.
- L'operatore / restituisce sempre un valore Double.
- L'operatore % genera un'eccezione in caso di divisione per modulo zero.
- L'operatore % accetta operandi di tipo Float e Double.
- Tutte le funzioni restituiscono un valore Double, eccetto la funzione Sign, che restituisce un valore Int32.
Gli operatori di cast unario
type
possono essere di questi tipi di dati:- bool, Boolean
- sbyte, SByte
- short, Int16
- int, Int32
- long, Int64
- byte, Byte
- ushort, UInt16
- uint, UInt32
- ulong, UInt64
- float, Float
- double, Double
Operatori applicati a tipi di dati specifici:
Operatore | Operand1 | Operand2 | Descrizione |
---|---|---|---|
Plus | DateTime | Numero integrale | Operand2 viene interpretato come millisecondi. |
Plus | Numero integrale | DateTime | Operand1 viene interpretato come millisecondi. |
Plus | DateTime | TimeZone (Struct) | Operand2 viene interpretato come minuti (TimeZone.Offset). |
Plus | TimeZone (Struct) | DateTime | Operand1 viene interpretato come minuti (TimeZone.Offset). |
Plus | TimeZone | Numero integrale | Operand1 viene interpretato come minuti (TimeZone.Offset).Operand2 viene interpretato come minuti. |
Plus | Numero integrale | TimeZone | Operand1 viene interpretato come minuti.Operand2 viene interpretato come minuti (TimeZone.Offset). |
Minus | DateTime | Numero integrale | Operand2 viene interpretato come millisecondi. |
Minus | DateTime | TimeZone (Struct) | Operand2 viene interpretato come minuti (TimeZone.Offset). |
Minus | TimeZone | Numero integrale | Operand1 viene interpretato come minuti (TimeZone.Offset).Operand2 viene interpretato come minuti. |
Funzioni
Funzioni da utilizzare nel valutatore di espressioni:
Funzione | Sintassi | Descrizione | Tipo di dati restituito |
---|---|---|---|
max | max( value1 , value2 , value3 , ...) | Restituisce il valore più alto. | Double |
min | min( value1 , value2 , value3 , ...) | Restituisce il valore più basso. | Double |
avg | avg( value1 , value2 , value3 , ...) | Restituisce la media dei valori indicati. | Double |
abs | abs( value ) | Restituisce il valore assoluto del numero dato. | Double |
trunc | trunc( value ) | Restituisce la parte intera di un numero decimale. | Double |
ceil | ceil( value ) | Restituisce il valore approssimato per eccesso. | Double |
floor | floor( value ) | Restituisce il valore approssimato per difetto. | Double |
round | round( value ) | Restituisce l'approssimazione al numero intero più vicino. | Double |
sqrt | sqrt( value ) | Restituisce la radice quadrata del numero dato. | Double |
sign | sign( value ) | Controlla se il numero a virgola mobile fornito è negativo. Restituisce 0 se vero o 1 se falso. | Int32 |
like | like( string_value , pattern ) | Restituisce vero se il parametro string_value corrisponde al pattern . | Boolean |
isempty | isempty( variable ) | Verifica se un dato NodeID, String, LocalizedText o DataTime è vuoto. | Boolean |
if | if( condition , value_if_true , value_if_false ) | Verifica se i parametri value_if_true e value_if_false sono dello stesso tipo di dati. | Tipo di dati value_if_true |
left_of | left_of(string, pattern) | Restituisce la sottostringa a sinistra della prima occorrenza del modello di espressione regolare.
IMPORTANTE:
Non utilizzare caratteri jolly nei modelli.
| Stringa |
right_of | right_of(string, pattern) | Restituisce la sottostringa a destra della prima occorrenza del modello di espressione regolare.
IMPORTANTE:
Non utilizzare caratteri jolly nei modelli.
| Stringa |
Output
Il valore risultante dall'espressione.
Esempio

Fornire un feedback