Справочник оператора DSL, Справочник оператора DSL

Операторы позволяют вам сверять значения атрибутов признаков с конкретными значениями, сравнивать их друг с другом и комбинировать выражения, используемые в узлах condition .

Операторы доступны через следующие операторы import :

import com.google.home.automation.and
import com.google.home.automation.between
import com.google.home.automation.contains
import com.google.home.automation.equals
import com.google.home.automation.greaterThan
import com.google.home.automation.greaterThanOrEquals
import com.google.home.automation.lessThan
import com.google.home.automation.not
import com.google.home.automation.notEquals
import com.google.home.automation.or

Операторы сравнения

между

Возвращает значение true , если значение выражения 1 находится между значениями выражения 2 и выражения 3 (включительно). Выражения ранжируются по-разному в зависимости от типа данных. Простые типы данных, такие как числа и строки, ранжируются так же, как и в Kotlin.

Пример
Выражение 1 Выражение 2 Выражение 3 Результат
6 1 3 false
2 1 3 true

Пример DSL

val time = stateReader<_>(structure, Time)
condition() {
  expression = time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

равно

Возвращает значение true , когда Выражение 1 равно Выражению 2.

Пример
Выражение 1 Выражение 2 Результат
6 1 false
2 2 true

Пример DSL

washer.operationalState equals STOPPED

больше, чем

Возвращает значение true , если выражение 1 больше, чем выражение 2.

Пример
Выражение 1 Выражение 2 Результат
6 1 true
1 6 false

Пример DSL

( blindsPosition.currentPositionLift greaterThan 0u )

большечеморравс

Возвращает значение true , если выражение 1 больше или равно выражению 2.

Пример
Выражение 1 Выражение 2 Результат
8 6 true
6 6 true
1 6 false

Пример DSL

( starterNode.measuredValue greaterThanOrEquals 50 )

меньше, чем

принимает значение true , если выражение 1 меньше выражения 2.

Пример
Выражение 1 Выражение 2 Результат
6 1 false
1 6 true

Пример DSL

time.currentTime lessThan LocalTime.of(22,0,0,0)

МеньшеТханОРевалс

Возвращает значение true , если выражение 1 меньше или равно выражению 2.

Пример
Выражение 1 Выражение 2 Результат
8 6 false
6 6 true
1 6 true

Пример DSL

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

Возвращает значение true , если выражение 1 не равно выражению 2.

Пример
Выражение 1 Выражение 2 Результат
6 1 true
1 6 true
2 2 false

Пример DSL

occupancyStateChange.occupied notEquals 0

Арифметические операторы

Добавлять

Оператор сложения ( + ).

Пример DSL

var totalCount = 0
...
totalCount = totalCount + 1

Вычесть

Оператор вычитания ( - ).

Пример DSL

var countdown = 10
...
countdown = countdown - 1

Умножить

Оператор умножения ( * ).

Пример DSL

val millis = seconds * 1000

Разделять

Оператор деления ( / ).

Пример DSL

val rpm = revolutions / minutes

Логические операторы

и

Объединяет два выражения в логическое выражение И, вычисляя значение true если оба выражения имеют true .

Пример
Выражение 1 Выражение 2 Результат
false false false
true false false
false true false
true true true

Пример DSL

((device.occupied notEquals 0) and
   time.currentTime.between(time.sunriseTime, time.sunsetTime))

нет

Отменяет логическое значение выражения.

Пример
Выражение Результат
true false
false true

Пример DSL

time.currentTime not (between(time.sunriseTime, time.sunsetTime))

или

Объединяет два выражения в логическое выражение ИЛИ.

Пример
Выражение 1 Выражение 2 Результат
false false false
true false true
false true true

Пример DSL

(time.currentTime equals LocalTime.of(10,0,0,0)) or
  (time.currentTime equals LocalTime.of(22,0,0,0))