تتيح لك عوامل التشغيل التحقّق من قيمة سمات السمة مقابل قيم معيّنة، ومقارنتها ببعضها البعض، ودمج التعبيرات المستخدَمة في عُقد condition.
تتوفّر عوامل التشغيل من خلال عبارات import التالية:
import GoogleHomeSDK
عوامل تشغيل المقارنة
بين
يتم تقييمها إلى true عندما تكون قيمة "التعبير 1" بين قيمة "التعبير 2" و"التعبير 3" (شاملة). يتم ترتيب التعبيرات بشكل مختلف استنادًا إلى نوع البيانات. يتم ترتيب أنواع البيانات البسيطة، مثل الأرقام والسلاسل، بالطريقة نفسها التي يتم بها ترتيبها في Swift.
| التعبير 1 | التعبير 2 | Expression 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)
}