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

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

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

import GoogleHomeSDK

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

между

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

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

Пример DSL

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

равно

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

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

Пример DSL

lightOnOffState.onOff.equals(true)

больше, чем

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

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

Пример DSL

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

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

Возвращает значение 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

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

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

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

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

Пример DSL

starterNode.measuredValue.lessThanOrEquals(50)

notEquals

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

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

Пример DSL

occupancySensorStarter.occupancy.notEquals(.occupied)

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

Инфиксные операторы, такие как +, -, * или /, не поддерживаются для создания выражений автоматизации в Swift. Вместо этого используйте операторы, предоставляемые SDK, например Plus или Minus .

Добавлять

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

Пример DSL

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

Вычесть

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

Пример DSL

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

Умножить

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

Пример DSL

val millis = seconds.multiply(1000)

Разделять

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

Пример DSL

val rpm = revolutions.divide(minutes)

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

и

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

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

Пример DSL

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

нет

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

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

Пример DSL

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

или

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

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

Пример DSL

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