Les opérateurs vous permettent de vérifier la valeur des attributs de trait par rapport à des valeurs spécifiques, de les comparer les uns aux autres et de combiner les expressions utilisées dans les nœuds condition
.
Les opérateurs sont mis à disposition via les instructions import
suivantes:
import GoogleHomeSDK
Opérateurs de comparaison
entre
A pour résultat true
lorsque la valeur de l'expression 1 est comprise entre celle de l'expression 2 et celle de l'expression 3 (inclus). Les expressions sont classées différemment selon leur type de données. Les types de données simples tels que les nombres et les chaînes sont classés de la même manière que dans Swift.
Expression 1 | Expression 2 | Expression 3 | Résultat |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Exemple de DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
est égal à
Renvoie true
lorsque l'expression 1 est égale à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Exemple de DSL
lightOnOffState.onOff.equals(true)
greaterThan
Renvoie true
lorsque l'expression 1 est supérieure à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Exemple de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Renvoie la valeur true
lorsque l'expression 1 est supérieure ou égale à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Exemple de DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
prend la valeur true
lorsque l'expression 1 est inférieure à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Exemple de DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Renvoie true
lorsque l'expression 1 est inférieure ou égale à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Exemple de DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Renvoie true
lorsque l'expression 1 n'est pas égale à l'expression 2.
Expression 1 | Expression 2 | Résultat |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Exemple de DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Opérateurs arithmétiques
Les opérateurs infixes tels que +, -, * ou / ne sont pas compatibles avec la création d'expressions d'automatisation en Swift. Utilisez plutôt les opérateurs fournis par le SDK, tels que Plus
ou Minus
.
Ajouter
L'opérateur d'addition .plus( )
.
Exemple de DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Soustraire
L'opérateur de soustraction .minus( )
.
Exemple de DSL
var countdown = 10
...
countdown = countdown.minus(1)
Multiplier
L'opérateur de multiplication .multiply( )
.
Exemple de DSL
val millis = seconds.multiply(1000)
Diviser
L'opérateur de division .divide( )
.
Exemple de DSL
val rpm = revolutions.divide(minutes)
Opérateurs logiques
et
Combine deux expressions dans une expression logique AND, qui prend la valeur true
lorsque les deux expressions sont true
.
Expression 1 | Expression 2 | Résultat |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Exemple de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
not
Négation de la valeur logique d'une expression.
Expression | Résultat |
---|---|
true |
false |
false |
true |
Exemple de DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
ou
Combine deux expressions en une expression OR logique.
Expression 1 | Expression 2 | Résultat |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Exemple de DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}