Les opérateurs vous permettent de vérifier la valeur des attributs de caractéristiques par rapport à des valeurs spécifiques, de les comparer entre elles et de combiner des expressions utilisées dans les nœuds condition.
Les opérateurs sont disponibles via les instructions import suivantes :
import GoogleHomeSDK
Opérateurs de comparaison
entre
Renvoie 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 à
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 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
Renvoie 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 dans 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 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
Inverse 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 dans 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)
}