Les opérateurs vous permettent de vérifier la valeur des attributs de trait par rapport à des valeurs spécifiques, de les comparer entre eux 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
Prend la valeur true lorsque la valeur de l'expression 1 est comprise entre celle de l'expression 2 et celle de l'expression 3 (incluses). 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 à
Prend la valeur 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
Prend 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
Prend la valeur 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
Prend la valeur 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 dans Swift. Utilisez plutôt les opérateurs fournis par le SDK, tels que Plus ou Minus.
Ajouter
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 renvoie 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
Annule 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 logique OR.
| 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)
}