डीएसएल ऑपरेटर के बारे में जानकारी

ऑपरेटर की मदद से, खास वैल्यू के आधार पर ट्रेट एट्रिब्यूट की वैल्यू की जांच की जा सकती है. साथ ही, एक-दूसरे की तुलना की जा सकती है और 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 दूसरा एक्सप्रेशन एक्सप्रेशन 3 नतीजा
6 1 3 false
2 1 3 true

डीएसएल का उदाहरण

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

बराबर

जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर होता है, तो इसका आकलन true के तौर पर किया जाता है.

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

डीएसएल का उदाहरण

washer.operationalState equals STOPPED

greaterThan

जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा होता है, तो इसका मान true होता है.

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

डीएसएल का उदाहरण

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा या उसके बराबर होता है, तो इसका नतीजा true होता है.

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

डीएसएल का उदाहरण

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

एक्सप्रेशन 1, एक्सप्रेशन 2 से कम होने पर, true का आकलन किया जाता है.

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

डीएसएल का उदाहरण

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

lessThanOrEquals

जब एक्सप्रेशन 1, एक्सप्रेशन 2 से कम या उसके बराबर होता है, तो इसका नतीजा true होता है.

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

डीएसएल का उदाहरण

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर नहीं होता है, तो true का आकलन किया जाता है.

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

डीएसएल का उदाहरण

occupancyStateChange.occupied notEquals 0

अंकगणितीय ऑपरेटर

जोड़ें

जोड़ने वाला ऑपरेटर ( + ).

डीएसएल का उदाहरण

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

सब्सट्रैक्ट

घटाने वाला ऑपरेटर ( - ).

डीएसएल का उदाहरण

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

गुणा

गुणा करने वाला ऑपरेटर ( * ).

डीएसएल का उदाहरण

val millis = seconds * 1000

विभाजन करें

भाग देने वाला ऑपरेटर ( / ).

डीएसएल का उदाहरण

val rpm = revolutions / minutes

तार्किक ऑपरेटर

और

यह लॉजिकल AND एक्सप्रेशन में दो एक्सप्रेशन को जोड़ता है. जब दोनों एक्सप्रेशन true होते हैं, तो यह true का आकलन करता है.

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

डीएसएल का उदाहरण

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

नहीं

किसी एक्सप्रेशन की लॉजिकल वैल्यू को नेगेटिव बनाता है.

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

डीएसएल का उदाहरण

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

या

दो एक्सप्रेशन को लॉजिकल OR एक्सप्रेशन में जोड़ता है.

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

डीएसएल का उदाहरण

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