Riferimento all'operatore DSL per iOS

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.

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

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

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

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

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

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

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

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

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

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