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