DSL operatör referansı

Operatörler, özellik özelliklerinin değerini belirli değerlere göre kontrol etmenize, 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

1. ifadenin değeri 2. ifade ile 3. ifade arasında olduğunda (dahil) true değerini döndürür. İfadeler, veri türlerine göre farklı şekilde sıralanır. Sayılar ve dizeler gibi basit veri türleri, Kotlin'de olduğu gibi sıralanır.

Örnek
İfade 1 İfade 2 İfade 3 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)
}

equals

1. ifade 2. ifadeye eşit olduğunda true değerini döndürür.

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

DSL örneği

washer.operationalState equals STOPPED

greaterThan

1. ifade 2. ifadeden büyük olduğunda true değerini döndürür.

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

DSL örneği

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

1. ifade 2. ifadeden büyük veya ona eşit olduğunda true değerini döndürür.

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

DSL örneği

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

ifadesi, 1. ifade 2. ifadeden azsa true değerini döndürür.

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

DSL örneği

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

lessThanOrEquals

1. ifade 2. ifadeden küçük veya eşit olduğunda true değerini döndürür.

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

DSL örneği

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

1. ifade 2. ifadeye eşit olmadığında true değerini döndürür.

Örnek
İfade 1 İ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

Çarp

Ç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 VE ifadesi olarak birleştirir. Her iki ifade de true olduğunda true olarak değerlendirilir.

Örnek
İfade 1 İ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 reddeder.

Örnek
İfade Sonuç
true false
false true

DSL örneği

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

veya

İki ifadeyi mantıksal VEYA ifadesi halinde birleştirir.

Örnek
İfade 1 İ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))