Operator memungkinkan Anda memeriksa nilai atribut sifat terhadap nilai
tertentu, membandingkannya satu sama lain, dan menggabungkan ekspresi yang digunakan di
node condition
.
Operator tersedia melalui pernyataan import
berikut:
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
Operator perbandingan
antara
Mengevaluasi ke true
jika nilai Ekspresi 1 berada di antara Ekspresi
2 dan Ekspresi 3 (inklusif). Ekspresi diberi peringkat secara berbeda, bergantung pada
jenis datanya. Jenis data sederhana seperti angka dan string diberi peringkat
dengan cara yang sama seperti di Kotlin.
Ekspresi 1 | Ekspresi 2 | Ekspresi 3 | Hasil |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Contoh DSL
val time = stateReader<_>(structure, Time)
condition() {
expression = time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
sama dengan
Bernilai true
jika Ekspresi 1 sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Contoh DSL
washer.operationalState equals STOPPED
greaterThan
Bernilai true
jika Ekspresi 1 lebih besar dari Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Contoh DSL
( blindsPosition.currentPositionLift greaterThan 0u )
greaterThanOrEquals
Mengevaluasi ke true
jika Ekspresi 1 lebih besar dari atau sama dengan Ekspresi
2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Contoh DSL
( starterNode.measuredValue greaterThanOrEquals 50 )
lessThan
bernilai true
jika Ekspresi 1 kurang dari Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Contoh DSL
time.currentTime lessThan LocalTime.of(22,0,0,0)
lessThanOrEquals
Bernilai true
jika Ekspresi 1 kurang dari atau sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Contoh DSL
( starterNode.measuredValue lessThanOrEquals 25 )
notEquals
Bernilai true
jika Ekspresi 1 tidak sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Contoh DSL
occupancyStateChange.occupied notEquals 0
Operator aritmatika
Tambahkan
Operator penambahan ( +
).
Contoh DSL
var totalCount = 0
...
totalCount = totalCount + 1
Kurangi
Operator pengurangan ( -
).
Contoh DSL
var countdown = 10
...
countdown = countdown - 1
Kali
Operator perkalian ( *
).
Contoh DSL
val millis = seconds * 1000
Bagi
Operator pembagian ( /
).
Contoh DSL
val rpm = revolutions / minutes
Operator logika
dan
Menggabungkan dua ekspresi dalam ekspresi AND logis, yang dievaluasi menjadi true
saat
kedua ekspresinya adalah true
.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Contoh DSL
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
tidak
Menegasikan nilai logika ekspresi.
Ekspresi | Hasil |
---|---|
true |
false |
false |
true |
Contoh DSL
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
atau
Menggabungkan dua ekspresi menjadi ekspresi OR logis.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Contoh DSL
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))