iOS DSL 연산자 참조

연산자를 사용하면 특정 값을 기준으로 트레잇 속성의 값을 확인하고, 서로 비교하고, condition 노드에서 사용되는 표현식을 결합할 수 있습니다.

연산자는 다음 import 문을 통해 사용할 수 있습니다.

import GoogleHomeSDK

비교 연산자

범위

표현식 1의 값이 표현식 2와 표현식 3의 값 사이 (양 끝값 포함)인 경우 true로 평가됩니다. 표현식은 데이터 유형에 따라 순위가 다르게 매겨집니다. 숫자 및 문자열과 같은 간단한 데이터 유형은 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)
}

같음

표현식 1이 표현식 2와 같으면 true로 평가됩니다.

표현식 1 표현식 2 결과
6 1 false
2 2 true

DSL 예시

lightOnOffState.onOff.equals(true)

greaterThan

표현식 1이 표현식 2보다 클 때 true로 평가됩니다.

표현식 1 표현식 2 결과
6 1 true
1 6 false

DSL 예시

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

greaterThanOrEquals

표현식 1이 표현식 2보다 크거나 같은 경우 true로 평가됩니다.

표현식 1 표현식 2 결과
8 6 true
6 6 true
1 6 false

DSL 예시

starterNode.measuredValue.greaterThanOrEquals(50)

lessThan

표현식 1이 표현식 2보다 작으면 true로 평가됩니다.

표현식 1 표현식 2 결과
6 1 false
1 6 true

DSL 예시

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

lessThanOrEquals

표현식 1이 표현식 2보다 작거나 같은 경우 true로 평가됩니다.

표현식 1 표현식 2 결과
8 6 false
6 6 true
1 6 true

DSL 예시

starterNode.measuredValue.lessThanOrEquals(50)

notEquals

표현식 1이 표현식 2와 같지 않으면 true로 평가됩니다.

표현식 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)

논리 연산자

논리 AND 표현식에서 두 표현식을 결합하여 두 표현식 모두 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())
}

또는

두 표현식을 논리적 OR 표현식으로 결합합니다.

표현식 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)
}