연산자를 사용하면 특성 속성 값을 특정 값과 비교하고, 서로 비교하고, 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에서 자동화 표현식을 빌드하는 데 +, -, *, /와 같은 중위 연산자는 지원되지 않습니다. 대신 Plus
또는 Minus
과 같은 SDK에서 제공하는 연산자를 사용하세요.
추가
더하기 연산자 .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)
}