연산자를 사용하면 특정 값을 기준으로 트레잇 속성의 값을 확인하고, 서로 비교하고, 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)
}