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

عملگرها به شما امکان می‌دهند مقدار مشخصه‌های ویژگی را دربرابر مقادیر خاص بررسی کنید، آن‌ها را با یکدیگر مقایسه کنید، و عبارت‌های استفاده‌شده در گره‌های condition را ترکیب کنید.

اپراتورها ازطریق عبارت‌های import زیر دردسترس قرار می‌گیرند:

import GoogleHomeSDK

اپراتورهای مقایسه

بین

وقتی مقدار «عبارت ۱» بین مقدار «عبارت ۲» و «عبارت ۳» (شامل خود این مقادیر) باشد، به true ارزیابی می‌شود. عبارت‌ها بسته به نوع داده‌شان به‌طور متفاوتی رتبه‌بندی می‌شوند. انواع داده‌های ساده مانند اعداد و رشته‌ها به همان روشی که در Swift رتبه‌بندی می‌شوند، رتبه‌بندی می‌شوند.

مثال
عبارت ۱ حالت چهره ۲ Expression 3 نتیجه
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)

greaterThan

وقتی «عبارت ۱» بزرگ‌تر از «عبارت ۲» باشد، به true ارزیابی می‌شود.

مثال
عبارت ۱ حالت چهره ۲ نتیجه
6 1 true
1 6 false

نمونه DSL

// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)

greaterThanOrEquals

اگر «عبارت ۱» بزرگ‌تر یا مساوی با «عبارت ۲» باشد، مقدار true را برمی‌گرداند.

مثال
عبارت ۱ حالت چهره ۲ نتیجه
8 6 true
6 6 true
1 6 false

نمونه DSL

starterNode.measuredValue.greaterThanOrEquals(50)

lessThan

وقتی «عبارت ۱» کمتر از «عبارت ۲» باشد، به true ارزیابی می‌شود.

مثال
عبارت ۱ حالت چهره ۲ نتیجه
6 1 false
1 6 true

نمونه DSL

// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)

lessThanOrEquals

وقتی «عبارت ۱» کوچک‌تر یا مساوی «عبارت ۲» باشد، مقدار true را برمی‌گرداند.

مثال
عبارت ۱ حالت چهره ۲ نتیجه
8 6 false
6 6 true
1 6 true

نمونه DSL

starterNode.measuredValue.lessThanOrEquals(50)

notEquals

اگر «عبارت ۱» با «عبارت ۲» برابر نباشد، مقدار true را برمی‌گرداند.

مثال
عبارت ۱ حالت چهره ۲ نتیجه
6 1 true
1 6 true
2 2 false

نمونه DSL

occupancySensorStarter.occupancy.notEquals(.occupied)

عملگرهای حسابی

عملگرهای میان‌وند مانند +، -، *، یا / برای ساختن عبارت‌های خودکارسازی در Swift پشتیبانی نمی‌شوند. درعوض، از اپراتورهای ارائه‌شده توسط کیت توسعه نرم‌افزار استفاده کنید، مانند 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)
}