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