Referência do operador de DSL do iOS

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.

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

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

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

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

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

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

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

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

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

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