Los operadores te permiten verificar el valor de los atributos de rasgos en función de valores específicos, compararlos entre sí y combinar las expresiones que se usan en los nodos condition
.
Los operadores están disponibles a través de las siguientes instrucciones import
:
import GoogleHomeSDK
Operadores de comparación
entre
Evalúa como true
cuando el valor de la expresión 1 está entre el de la expresión 2 y el de la expresión 3 (inclusive). Las expresiones se clasifican de manera diferente según su tipo de datos. Los tipos de datos simples, como números y cadenas, se clasifican de la misma manera que en Swift.
Expresión 1 | Expresión 2 | Expresión 3 | Resultado |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Ejemplo de DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
es igual a
Se evalúa como true
cuando la expresión 1 es igual a la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Ejemplo de DSL
lightOnOffState.onOff.equals(true)
greaterThan
Se evalúa como true
cuando la expresión 1 es mayor que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Ejemplo de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Se evalúa como true
cuando la expresión 1 es mayor o igual que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Ejemplo de DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
se evalúa como true
cuando la expresión 1 es menor que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Ejemplo de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Se evalúa como true
cuando la expresión 1 es menor o igual que la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Ejemplo de DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Se evalúa como true
cuando la expresión 1 no es igual a la expresión 2.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Ejemplo de DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Operadores aritméticos
Los operadores infijos, como +, -, * o /, no son compatibles con la compilación de expresiones de automatización en Swift. En su lugar, usa los operadores que proporciona el SDK, como Plus
o Minus
.
Agregar
El operador de adición .plus( )
.
Ejemplo de DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Restar
El operador de sustracción .minus( )
.
Ejemplo de DSL
var countdown = 10
...
countdown = countdown.minus(1)
Multiplicar
El operador de multiplicación .multiply( )
.
Ejemplo de DSL
val millis = seconds.multiply(1000)
Dividir
El operador de división .divide( )
.
Ejemplo de DSL
val rpm = revolutions.divide(minutes)
Operadores lógicos
y
Combina dos expresiones en una expresión lógica Y, que se evalúa como true
cuando ambas expresiones son true
.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Ejemplo de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
no
Niega el valor lógico de una expresión.
Expresión | Resultado |
---|---|
true |
false |
false |
true |
Ejemplo de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
o
Combina dos expresiones en una expresión OR lógica.
Expresión 1 | Expresión 2 | Resultado |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Ejemplo de DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}