โอเปอเรเตอร์ช่วยให้คุณตรวจสอบค่าของแอตทริบิวต์ลักษณะเทียบกับค่าที่เฉพาะเจาะจง เปรียบเทียบค่าเหล่านั้น และรวมนิพจน์ที่ใช้ในโหนด condition
โอเปอเรเตอร์จะพร้อมใช้งานผ่านคำสั่ง import
ต่อไปนี้
import GoogleHomeSDK
โอเปอเรเตอร์การเปรียบเทียบ
ระหว่าง
ประเมินเป็น true
เมื่อค่าของนิพจน์ 1 อยู่ระหว่างค่าของนิพจน์ 2 และนิพจน์ 3 (รวม) นิพจน์จะได้รับการจัดอันดับแตกต่างกันไปตามประเภทข้อมูล ประเภทข้อมูลพื้นฐาน เช่น ตัวเลขและสตริง จะจัดอันดับเหมือนกับใน 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)
}
เท่ากับ
ประเมินเป็น true
เมื่อนิพจน์ 1 เท่ากับนิพจน์ 2
นิพจน์ 1 | นิพจน์ 2 | ผลลัพธ์ |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
ตัวอย่าง DSL
lightOnOffState.onOff.equals(true)
greaterThan
ประเมินเป็น true
เมื่อนิพจน์ 1 มากกว่านิพจน์ 2
นิพจน์ 1 | นิพจน์ 2 | ผลลัพธ์ |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
ตัวอย่าง DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
ประเมินเป็น true
เมื่อนิพจน์ 1 มากกว่าหรือเท่ากับนิพจน์ 2
นิพจน์ 1 | นิพจน์ 2 | ผลลัพธ์ |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
ตัวอย่าง DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
ประเมินเป็น true
เมื่อนิพจน์ 1 น้อยกว่านิพจน์ 2
นิพจน์ 1 | นิพจน์ 2 | ผลลัพธ์ |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
ตัวอย่าง DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
ประเมินเป็น true
เมื่อนิพจน์ 1 น้อยกว่าหรือเท่ากับนิพจน์ 2
นิพจน์ 1 | นิพจน์ 2 | ผลลัพธ์ |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
ตัวอย่าง DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
ประเมินเป็น true
เมื่อนิพจน์ 1 ไม่เท่ากับนิพจน์ 2
นิพจน์ 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)
โอเปอเรเตอร์ตรรกะ
และ
รวมนิพจน์ 2 รายการในนิพจน์ AND เชิงตรรกะ ซึ่งจะประเมินเป็น true
เมื่อนิพจน์ทั้ง 2 รายการเป็น 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())
}
หรือ
รวมนิพจน์ 2 รายการเข้าด้วยกันเป็นนิพจน์ 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)
}