אופרטורים מאפשרים לבדוק את הערך של מאפייני המאפיינים לעומת ערכים ספציפיים, להשוות ביניהם ולשלב ביטויים שמשמשים בצמתים מסוג 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
אופרטורים להשוואה
בין
הפונקציה מקבלת את הערך true
כשהערך של ביטוי 1 הוא בין הערך של ביטוי 2 לבין הערך של ביטוי 3 (כולל). הביטויים מדורגים באופן שונה בהתאם לסוג הנתונים שלהם. סוגי נתונים פשוטים כמו מספרים ומחרוזות מדורגים באותו אופן כמו ב-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)
}
שווה ל-
הפונקציה מחזירה את הערך true
כאשר ביטוי 1 שווה לביטוי 2.
ביטוי 1 | ביטוי 2 | תוצאה |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
דוגמה ל-DSL
washer.operationalState equals STOPPED
greaterThan
הפונקציה מחזירה את הערך true
כאשר ביטוי 1 גדול מביטוי 2.
ביטוי 1 | ביטוי 2 | תוצאה |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
דוגמה ל-DSL
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
הפונקציה מחזירה את הערך true
כאשר ביטוי 1 גדול מביטוי 2 או שווה לו.
ביטוי 1 | ביטוי 2 | תוצאה |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
דוגמה ל-DSL
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
מקבל את הערך true
כשביטוי 1 קטן מביטוי 2.
ביטוי 1 | ביטוי 2 | תוצאה |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
דוגמה ל-DSL
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
הפונקציה מקבלת את הערך true
כאשר ביטוי 1 קטן מביטוי 2 או שווה לו.
ביטוי 1 | ביטוי 2 | תוצאה |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
דוגמה ל-DSL
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
הפונקציה מקבלת את הערך true
כאשר ביטוי 1 לא שווה לביטוי 2.
ביטוי 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))