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