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