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