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

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