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

between() के साथ तारीखों का इस्तेमाल करना

between() ऑपरेटर का इस्तेमाल करते समय, तारीख की कोई रेंज तय की जा सकती है:

val exp2 =
  time.currentDate.between(
    LocalDate.of(2025, Month.OCTOBER, 1),
    LocalDate.of(2025, Month.DECEMBER, 15),
  )

हालांकि, तारीख की पूरी जानकारी देना ज़रूरी नहीं है. ऑटोमेशन डीएसएल की मदद से, तारीख की रेंज को कई तरीकों से दिखाया जा सकता है:

  • सिर्फ़ साल और महीने का इस्तेमाल करके:
val exp2 =
  time.currentDate.yearMonth.between(
    YearMonth.of(2024, Month.OCTOBER),
    YearMonth.of(2026, Month.JANUARY),
  )
  • सिर्फ़ महीने और दिन का इस्तेमाल करके:
val exp2 =
  time.currentDate.monthDay.between(
    MonthDay.of(Month.OCTOBER, 1),
    MonthDay.of(Month.DECEMBER, 15),
  )
  • सिर्फ़ महीने के दिन का इस्तेमाल करके:
val exp2 = time.currentDate.day.between(1, 15)

बराबर

जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर होता है, तो true के तौर पर नतीजा दिखाता है.

उदाहरण
एक्सप्रेशन 1 एक्सप्रेशन 2 नतीजा
6 1 false
2 2 true

DSL का उदाहरण

washer.operationalState equals STOPPED

greaterThan

जब एक्सप्रेशन 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 )

lessThan

जब एक्सप्रेशन 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))