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

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)
}