ข้อมูลอ้างอิงโอเปอเรเตอร์ DSL ของ iOS

โอเปอเรเตอร์ช่วยให้คุณตรวจสอบค่าของแอตทริบิวต์ลักษณะเทียบกับค่าที่เฉพาะเจาะจง เปรียบเทียบค่าเหล่านั้น และรวมนิพจน์ที่ใช้ในโหนด 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)
}