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

비교 연산자

범위

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

같음

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

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

DSL 예시

washer.operationalState equals STOPPED

greaterThan

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

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

DSL 예시

( blindsPosition.currentPositionLift greaterThan 0u )

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 예시

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

lessThanOrEquals

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

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

DSL 예

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

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

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

논리 연산자

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

또는

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

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