ऑपरेटर की मदद से, खास वैल्यू के आधार पर ट्रेट एट्रिब्यूट की वैल्यू की जांच की जा सकती है. साथ ही, एक-दूसरे की तुलना की जा सकती है और 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 |
डीएसएल का उदाहरण
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 |
डीएसएल का उदाहरण
washer.operationalState equals STOPPED
greaterThan
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा होता है, तो इसका मान true
होता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
डीएसएल का उदाहरण
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
अगर एक्सप्रेशन 1, एक्सप्रेशन 2 से ज़्यादा या उसके बराबर है, तो यह फ़ंक्शन true
दिखाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
डीएसएल का उदाहरण
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
एक्सप्रेशन 1, एक्सप्रेशन 2 से कम होने पर, true
का आकलन किया जाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
डीएसएल का उदाहरण
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 से कम या उसके बराबर होता है, तो इसका नतीजा true
होता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
डीएसएल का उदाहरण
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
जब एक्सप्रेशन 1, एक्सप्रेशन 2 के बराबर नहीं होता है, तो इसका आकलन true
के तौर पर किया जाता है.
एक्सप्रेशन 1 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
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 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
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 | एक्सप्रेशन 2 | नतीजा |
---|---|---|
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))