تسمح لك عوامل التشغيل بالتحقّق من قيمة سمات السمة مقابل قيم معيّنة، ومقارنتها ببعضها البعض، ودمج التعبيرات المستخدَمة في عُقد 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)
العوامل المنطقية
و
يجمع بين تعبيرَين في تعبير منطقي 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)
}