Android DSL operatörü referansı

Operatörler, özellik niteliklerinin değerini belirli değerlere göre kontrol etmenize, bunları birbirleriyle karşılaştırmanıza ve condition düğümlerinde kullanılan ifadeleri birleştirmenize olanak tanır.

Operatörler aşağıdaki import ifadeleri aracılığıyla kullanılabilir:

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

Karşılaştırma operatörleri

arasında

İfade 1'in değeri, İfade 2 ile İfade 3'ün değeri arasındaysa (bu değerler dahil) true olarak değerlendirilir. İfadeler, veri türlerine göre farklı şekilde sıralanır. Sayılar ve dizeler gibi basit veri türleri, Kotlin'dekiyle aynı şekilde sıralanır.

Örnek
1. ifade İfade 2 3. İfade Sonuç
6 1 3 false
2 1 3 true

DSL örneği

val time = stateReader<_>(structure, Time)
condition() {
  expression = time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

between() ile tarihleri kullanma

between() operatörünü kullanırken bir tarih aralığı belirtebilirsiniz:

val exp2 =
  time.currentDate.between(
    LocalDate.of(2025, Month.OCTOBER, 1),
    LocalDate.of(2025, Month.DECEMBER, 15),
  )

Ancak tam tarihlerle sınırlı değilsiniz. Otomasyon DSL'si, tarih aralığını çeşitli şekillerde ifade etmenize de olanak tanır:

  • Yalnızca yıl ve ay kullanma:
val exp2 =
  time.currentDate.yearMonth.between(
    YearMonth.of(2024, Month.OCTOBER),
    YearMonth.of(2026, Month.JANUARY),
  )
  • Yalnızca ay ve gün kullanma:
val exp2 =
  time.currentDate.monthDay.between(
    MonthDay.of(Month.OCTOBER, 1),
    MonthDay.of(Month.DECEMBER, 15),
  )
  • Yalnızca ayın gününü kullanma:
val exp2 = time.currentDate.day.between(1, 15)

equals

1. ifade 2. ifadeye eşit olduğunda true olarak değerlendirilir.

Örnek
1. ifade İfade 2 Sonuç
6 1 false
2 2 true

DSL örneği

washer.operationalState equals STOPPED

greaterThan

İfade 1, İfade 2'den büyük olduğunda true sonucunu verir.

Örnek
1. ifade İfade 2 Sonuç
6 1 true
1 6 false

DSL örneği

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

İfade 1, İfade 2'den büyük veya ona eşit olduğunda true değerini döndürür.

Örnek
1. ifade İfade 2 Sonuç
8 6 true
6 6 true
1 6 false

DSL örneği

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

İfade 1, İfade 2'den küçük olduğunda true değerini verir.

Örnek
1. ifade İfade 2 Sonuç
6 1 false
1 6 true

DSL örneği

time.currentTime lessThan LocalTime.of(22,0,0,0)

lessThanOrEquals

İfade 1, İfade 2'den küçük veya ona eşit olduğunda true değerini döndürür.

Örnek
1. ifade İfade 2 Sonuç
8 6 false
6 6 true
1 6 true

DSL örneği

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

İfade 1, İfade 2'ye eşit olmadığında true olarak değerlendirilir.

Örnek
1. ifade İfade 2 Sonuç
6 1 true
1 6 true
2 2 false

DSL örneği

occupancyStateChange.occupied notEquals 0

Aritmetik operatörler

Ekle

Toplama operatörü ( + ).

DSL örneği

var totalCount = 0
...
totalCount = totalCount + 1

Çıkarma

Çıkarma operatörü ( - ).

DSL örneği

var countdown = 10
...
countdown = countdown - 1

Çarpma

Çarpma operatörü ( * ).

DSL örneği

val millis = seconds * 1000

Bölme

Bölme operatörü ( / ).

DSL örneği

val rpm = revolutions / minutes

Mantıksal operatörler

ve

İki ifadeyi mantıksal bir AND ifadesinde birleştirir ve her iki ifade de true olduğunda true olarak değerlendirilir.

Örnek
1. ifade İfade 2 Sonuç
false false false
true false false
false true false
true true true

DSL örneği

((device.occupied notEquals 0) and
   time.currentTime.between(time.sunriseTime, time.sunsetTime))

değil

Bir ifadenin mantıksal değerini tersine çevirir.

Örnek
İfade Sonuç
true false
false true

DSL örneği

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

veya

İki ifadeyi mantıksal bir VEYA ifadesinde birleştirir.

Örnek
1. ifade İfade 2 Sonuç
false false false
true false true
false true true

DSL örneği

(time.currentTime equals LocalTime.of(10,0,0,0)) or
  (time.currentTime equals LocalTime.of(22,0,0,0))