Referensi operator DSL

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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
Ekspresi Hasil
true false
false true

Contoh DSL

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

atau

Menggabungkan dua ekspresi menjadi ekspresi OR logis.

Contoh
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))