Toán tử cho phép bạn kiểm tra giá trị của các thuộc tính đặc điểm dựa trên các giá trị cụ thể, so sánh các giá trị đó với nhau và kết hợp các biểu thức được sử dụng trong nút condition
.
Các toán tử được cung cấp thông qua các câu lệnh import
sau:
import GoogleHomeSDK
Toán tử so sánh
nằm trong khoảng
Đưa ra kết quả là true
khi giá trị của Biểu thức 1 nằm trong khoảng giá trị của Biểu thức 2 và Biểu thức 3 (bao gồm cả hai giá trị này). Biểu thức được xếp hạng theo cách khác nhau tuỳ thuộc vào loại dữ liệu. Các loại dữ liệu đơn giản như số và chuỗi được xếp hạng giống như trong Swift.
Biểu thức 1 | Biểu thức 2 | Biểu thức 3 | Kết quả |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Ví dụ về DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
bằng
Đánh giá thành true
khi Biểu thức 1 bằng Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Ví dụ về DSL
lightOnOffState.onOff.equals(true)
greaterThan
Đánh giá thành true
khi Biểu thức 1 lớn hơn Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Ví dụ về DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Đánh giá thành true
khi Biểu thức 1 lớn hơn hoặc bằng Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Ví dụ về DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
sẽ có giá trị là true
khi Biểu thức 1 nhỏ hơn Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Ví dụ về DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Đưa ra kết quả là true
khi Biểu thức 1 nhỏ hơn hoặc bằng Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Ví dụ về DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Đánh giá thành true
khi Biểu thức 1 không bằng Biểu thức 2.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Ví dụ về DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Toán tử số học
Các toán tử infix như +, -, * hoặc / không được hỗ trợ để tạo biểu thức tự động hoá trong Swift. Thay vào đó, hãy sử dụng các toán tử do SDK cung cấp, chẳng hạn như Plus
hoặc Minus
.
Thêm
Toán tử cộng .plus( )
.
Ví dụ về DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Trừ
Toán tử trừ .minus( )
.
Ví dụ về DSL
var countdown = 10
...
countdown = countdown.minus(1)
Nhân
Toán tử nhân .multiply( )
.
Ví dụ về DSL
val millis = seconds.multiply(1000)
Chia
Toán tử chia .divide( )
.
Ví dụ về DSL
val rpm = revolutions.divide(minutes)
Toán tử logic
và
Kết hợp hai biểu thức trong một biểu thức AND logic, đánh giá thành true
khi cả hai biểu thức đều là true
.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Ví dụ về DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
không
Bỏ qua giá trị logic của một biểu thức.
Cụm từ | Kết quả |
---|---|
true |
false |
false |
true |
Ví dụ về DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
hoặc
Kết hợp hai biểu thức thành một biểu thức logic OR.
Biểu thức 1 | Biểu thức 2 | Kết quả |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Ví dụ về DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}