Os operadores permitem verificar o valor dos atributos de traço em relação a valores
específicos, comparar um com o outro e combinar expressões usadas em
nós condition
.
Os operadores são disponibilizados pelas seguintes instruções import
:
import GoogleHomeSDK
Operadores de comparação
entre
Avalia para true
quando o valor da Expressão 1 está entre o da Expressão
2 e o da Expressão 3 (inclusive). As expressões são classificadas de maneira diferente dependendo do tipo de dados. Tipos de dados simples, como números e strings, são classificados da
mesma forma que no Swift.
Expressão 1 | Expressão 2 | Expressão 3 | Resultado |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Exemplo de DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
igual a
Ele muda para true
quando a Expressão 1 é igual à Expressão 2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Exemplo de DSL
lightOnOffState.onOff.equals(true)
greaterThan
Será avaliado como true
quando a Expressão 1 for maior que a Expressão 2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Exemplo de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Avalia como true
quando a Expressão 1 é maior ou igual à Expressão
2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Exemplo de DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
avalia como true
quando a Expressão 1 é menor que a Expressão 2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Exemplo de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Avalia como true
quando a Expressão 1 é menor ou igual à Expressão 2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Exemplo de DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Ele muda para true
quando a Expressão 1 não é igual à Expressão 2.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Exemplo de DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Operadores aritméticos
Operadores infixos, como +, -, * ou /, não são aceitos para criar expressões
de automação no Swift. Em vez disso, use os operadores fornecidos pelo SDK, como
Plus
ou
Minus
.
Adicionar
O operador de adição .plus( )
.
Exemplo de DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Subtração
O operador de subtração .minus( )
.
Exemplo de DSL
var countdown = 10
...
countdown = countdown.minus(1)
Multiplicar
O operador de multiplicação .multiply( )
.
Exemplo de DSL
val millis = seconds.multiply(1000)
Dividir
O operador de divisão .divide( )
.
Exemplo de DSL
val rpm = revolutions.divide(minutes)
Operadores lógicos
e
Combina duas expressões em uma expressão lógica AND, avaliando true
quando
ambas as expressões são true
.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Exemplo de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
não
Nega o valor lógico de uma expressão.
Expressão | Resultado |
---|---|
true |
false |
false |
true |
Exemplo de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
ou
Combina duas expressões em uma expressão lógica OR.
Expressão 1 | Expressão 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Exemplo de DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}