Operators allow you to check the value of trait attributes against specific values, compare them to one another, and to combine expressions used in condition nodes.
عملگرها از طریق دستورات 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 (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 (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)
}