Informacje o operatorze DSL na iOS

Operatory umożliwiają sprawdzanie wartości atrybutów cech w odniesieniu do określonych wartości, porównywanie ich ze sobą oraz łączenie wyrażeń używanych w węzłach condition.

Operatory są dostępne za pomocą tych instrukcji import:

import GoogleHomeSDK

Operatory porównania

pomiędzy

Zwraca wartość true, gdy wartość wyrażenia 1 mieści się między wartościami wyrażeń 2 i 3 (obustronnie domknięte). Wyrażenia są klasyfikowane w różny sposób w zależności od typu danych. Proste typy danych, takie jak liczby i ciągi znaków, są klasyfikowane w ten sam sposób co w Swift.

Przykład
Wyrażenie 1 Wyrażenie 2 Wyrażenie 3 Wynik
6 1 3 false
2 1 3 true

Przykład DSL

let time = stateReader(structure, Google.TimeTrait)
condition {
  time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

równa się

Zwraca wartość true, gdy wyrażenie 1 jest równe wyrażeniu 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
6 1 false
2 2 true

Przykład DSL

lightOnOffState.onOff.equals(true)

greaterThan

Wynik to true, gdy wyrażenie 1 jest większe niż wyrażenie 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
6 1 true
1 6 false

Przykład DSL

// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)

greaterThanOrEquals

Zwraca wartość true, gdy wyrażenie 1 jest większe lub równe wyrażeniu 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
8 6 true
6 6 true
1 6 false

Przykład DSL

starterNode.measuredValue.greaterThanOrEquals(50)

lessThan

ma wartość true, gdy wyrażenie 1 jest mniejsze niż wyrażenie 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
6 1 false
1 6 true

Przykład DSL

// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)

lessThanOrEquals

Zwraca wartość true, gdy wyrażenie 1 jest mniejsze lub równe wyrażeniu 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
8 6 false
6 6 true
1 6 true

Przykład DSL

starterNode.measuredValue.lessThanOrEquals(50)

notEquals

Zwraca wartość true, gdy Wyrażenie 1 nie jest równe Wyrażeniu 2.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
6 1 true
1 6 true
2 2 false

Przykład DSL

occupancySensorStarter.occupancy.notEquals(.occupied)

Operatory arytmetyczne

Operatory wstawiane, takie jak +, -, * i /, nie są obsługiwane w ramach tworzenia wyrażeń automatyzacji w Swift. Zamiast tego użyj operatorów dostępnych w pakiecie SDK, takich jak Plus lub Minus.

Dodaj

Operator dodawania .plus( ).

Przykład DSL

var totalCount = 0
...
totalCount = totalCount.plus(1)

Odejmowanie

Operator odejmowania .minus( ).

Przykład DSL

var countdown = 10
...
countdown = countdown.minus(1)

Mnożenie

Operator mnożenia .multiply( ).

Przykład DSL

val millis = seconds.multiply(1000)

Dzielenie

Operator dzielenia .divide( ).

Przykład DSL

val rpm = revolutions.divide(minutes)

Operatory logiczne

i

Łączy 2 wyrażenia w wyrażeniu logicznym OR, które zwraca wartość true, gdy oba wyrażenia mają wartość true.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
false false false
true false false
false true false
true true true

Przykład DSL

condition {
  let exp1 = armState.armState
  let exp2 = doorLockState.lockState
  exp1.and(exp2)
}

nie

neguje wartość logiczną wyrażenia.

Przykład
Wyrażenie Wynik
true false
false true

Przykład DSL

condition {
  let exp1 = armState.armState
  let exp2 = doorLockState.lockState
  exp1.and(exp2.not())
}

lub

Łączy 2 wyrażenia w wyrażenie logiczne OR.

Przykład
Wyrażenie 1 Wyrażenie 2 Wynik
false false false
true false true
false true true

Przykład DSL

condition {
  let exp1 = doorLockState.lockState.equals(.unlocked)
  let exp2 = contactSensorState.stateValue.equals(false)
  exp1.or(exp2)
}