Referencia del operador de DSL de iOS

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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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.

Ejemplo
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)
}