Gli operatori ti consentono di verificare il valore degli attributi dei tratti rispetto a valori specifici, di confrontarli tra loro e di combinare le espressioni utilizzate nei nodi condition
.
Gli operatori vengono resi disponibili tramite le seguenti istruzioni import
:
import GoogleHomeSDK
Operatori di confronto
tra
Restituisce true
quando il valore dell'espressione 1 è compreso tra quello dell'espressione 2 e quello dell'espressione 3 (inclusi). Le espressioni vengono classificate in modo diverso a seconda del tipo di dati. I tipi di dati semplici, come numeri e stringhe, sono classificati come in Swift.
Espressione 1 | Espressione 2 | Espressione 3 | Risultato |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Esempio di DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
uguale a
Restituisce true
quando l'espressione 1 è uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Esempio di DSL
lightOnOffState.onOff.equals(true)
greaterThan
Restituisce true
quando l'espressione 1 è maggiore dell'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Esempio di DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Restituisce true
quando l'espressione 1 è maggiore o uguale all'espressione
2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Esempio di DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
restituisce true
quando l'espressione 1 è inferiore all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Esempio di DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Restituisce true
quando l'espressione 1 è minore o uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Esempio di DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Restituisce true
quando l'espressione 1 non è uguale all'espressione 2.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Esempio di DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Operatori aritmetici
Gli operatori infissi come +, -, * o / non sono supportati per la creazione di espressioni di automazione in Swift. Utilizza invece gli operatori forniti dall'SDK, ad esempio
Plus
o
Minus
.
Aggiungi
L'operatore di addizione .plus( )
.
Esempio di DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Sottrazione
L'operatore di sottrazione .minus( )
.
Esempio di DSL
var countdown = 10
...
countdown = countdown.minus(1)
Moltiplica
L'operatore di moltiplicazione .multiply( )
.
Esempio di DSL
val millis = seconds.multiply(1000)
Divisione
L'operatore di divisione .divide( )
.
Esempio di DSL
val rpm = revolutions.divide(minutes)
Operatori logici
e
Combina due espressioni in un'espressione AND logica, con un risultato pari a true
quando entrambe le espressioni sono true
.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Esempio di DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
non
Nega il valore logico di un'espressione.
Espressione | Risultato |
---|---|
true |
false |
false |
true |
Esempio di DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
o
Combina due espressioni in un'espressione OR logica.
Espressione 1 | Espressione 2 | Risultato |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Esempio di DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}