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

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

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

import com.google.home.automation.and
import com.google.home.automation.between
import com.google.home.automation.contains
import com.google.home.automation.equals
import com.google.home.automation.greaterThan
import com.google.home.automation.greaterThanOrEquals
import com.google.home.automation.lessThan
import com.google.home.automation.not
import com.google.home.automation.notEquals
import com.google.home.automation.or

عملگرهای مقایسه

بین

زمانی که مقدار عبارت 1 بین مقدار عبارت 2 و عبارت 3 (شامل) باشد، به true ارزیابی می شود. عبارات بسته به نوع داده آنها رتبه بندی متفاوتی دارند. انواع داده های ساده مانند اعداد و رشته ها به همان ترتیبی که در Kotlin هستند رتبه بندی می شوند.

مثال
بیان 1 بیان 2 بیان 3 نتیجه
6 1 3 false
2 1 3 true

مثال DSL

val time = stateReader<_>(structure, Time)
condition() {
  expression = time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

برابر است

زمانی که عبارت 1 برابر با عبارت 2 باشد، به true ارزیابی می شود.

مثال
بیان 1 بیان 2 نتیجه
6 1 false
2 2 true

مثال DSL

washer.operationalState equals STOPPED

بزرگتر از

زمانی که عبارت 1 بزرگتر از عبارت 2 باشد، به true ارزیابی می شود.

مثال
بیان 1 بیان 2 نتیجه
6 1 true
1 6 false

مثال DSL

( blindsPosition.currentPositionLift greaterThan 0u )

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

time.currentTime lessThan LocalTime.of(22,0,0,0)

lessThanOrEquals

زمانی که عبارت 1 کمتر یا مساوی با عبارت 2 باشد، به true ارزیابی می شود.

مثال
بیان 1 بیان 2 نتیجه
8 6 false
6 6 true
1 6 true

مثال DSL

( starterNode.measuredValue lessThanOrEquals 25 )

notequals

زمانی که عبارت 1 با عبارت 2 برابری نمی کند، به true ارزیابی می شود.

مثال
بیان 1 بیان 2 نتیجه
6 1 true
1 6 true
2 2 false

نمونه DSL

occupancyStateChange.occupied notEquals 0

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

اضافه کنید

عملگر جمع ( + ).

نمونه DSL

var totalCount = 0
...
totalCount = totalCount + 1

تفریق

عملگر تفریق ( - ).

نمونه DSL

var countdown = 10
...
countdown = countdown - 1

ضرب کنید

عملگر ضرب ( * ).

نمونه DSL

val millis = seconds * 1000

تقسیم کنید

عملگر تقسیم ( / ).

نمونه DSL

val rpm = revolutions / minutes

عملگرهای منطقی

و

دو عبارت را در یک عبارت AND منطقی ترکیب می کند، زمانی که هر دو عبارت true هستند، به true ارزیابی می شود.

مثال
بیان 1 بیان 2 نتیجه
false false false
true false false
false true false
true true true

مثال DSL

((device.occupied notEquals 0) and
   time.currentTime.between(time.sunriseTime, time.sunsetTime))

نه

ارزش منطقی یک عبارت را نفی می کند.

مثال
بیان نتیجه
true false
false true

نمونه DSL

time.currentTime not (between(time.sunriseTime, time.sunsetTime))

یا

دو عبارت را در یک عبارت منطقی OR ترکیب می کند.

مثال
بیان 1 بیان 2 نتیجه
false false false
true false true
false true true

نمونه DSL

(time.currentTime equals LocalTime.of(10,0,0,0)) or
  (time.currentTime equals LocalTime.of(22,0,0,0))