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.
İ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.
İ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.
İ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.
İ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.
İ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.
İ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.
İ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.
İ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.
İ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.
İ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))