مرجع اپراتور iOS DSL

عملگرها به شما امکان می‌دهند مقدار ویژگی‌های یک صفت را در مقابل مقادیر خاص بررسی کنید، آنها را با یکدیگر مقایسه کنید و عبارات مورد استفاده در گره‌های 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)
}