عملگرها به شما امکان میدهند مقدار مشخصههای ویژگی را دربرابر مقادیر خاص بررسی کنید، آنها را با یکدیگر مقایسه کنید، و عبارتهای استفادهشده در گرههای condition را ترکیب کنید.
اپراتورها ازطریق عبارتهای import زیر دردسترس قرار میگیرند:
import GoogleHomeSDK
اپراتورهای مقایسه
بین
وقتی مقدار «عبارت ۱» بین مقدار «عبارت ۲» و «عبارت ۳» (شامل خود این مقادیر) باشد، به true ارزیابی میشود. عبارتها بسته به نوع دادهشان بهطور متفاوتی رتبهبندی میشوند. انواع دادههای ساده مانند اعداد و رشتهها به همان روشی که در Swift رتبهبندی میشوند، رتبهبندی میشوند.
| عبارت ۱ | حالت چهره ۲ | 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 ارزیابی میشود.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
6 |
1 |
false |
2 |
2 |
true |
نمونه DSL
lightOnOffState.onOff.equals(true)
greaterThan
وقتی «عبارت ۱» بزرگتر از «عبارت ۲» باشد، به true ارزیابی میشود.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
6 |
1 |
true |
1 |
6 |
false |
نمونه DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
اگر «عبارت ۱» بزرگتر یا مساوی با «عبارت ۲» باشد، مقدار true را برمیگرداند.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
نمونه DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
وقتی «عبارت ۱» کمتر از «عبارت ۲» باشد، به true ارزیابی میشود.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
6 |
1 |
false |
1 |
6 |
true |
نمونه DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
وقتی «عبارت ۱» کوچکتر یا مساوی «عبارت ۲» باشد، مقدار true را برمیگرداند.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
نمونه DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
اگر «عبارت ۱» با «عبارت ۲» برابر نباشد، مقدار true را برمیگرداند.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
نمونه DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
عملگرهای حسابی
عملگرهای میانوند مانند +، -، *، یا / برای ساختن عبارتهای خودکارسازی در Swift پشتیبانی نمیشوند. درعوض، از اپراتورهای ارائهشده توسط کیت توسعه نرمافزار استفاده کنید، مانند
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 را برمیگرداند.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
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 ترکیب میکند.
| عبارت ۱ | حالت چهره ۲ | نتیجه |
|---|---|---|
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)
}