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 GoogleHomeSDK
Karşılaştırma operatörleri
arasında
1. ifadenin değeri 2. ifade ile 3. ifade arasında olduğunda (bu değerler 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, Swift'te olduğu gibi sıralanır.
İfade 1 | İfade 2 | İfade 3 | Sonuç |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
DSL örneği
let time = stateReader(structure, Google.TimeTrait)
condition {
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
lightOnOffState.onOff.equals(true)
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
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
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
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
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
1. ifade 2. ifadeden küçük veya ona 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(50)
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
occupancySensorStarter.occupancy.notEquals(.occupied)
Aritmetik operatörler
Swift'te otomasyon ifadeleri oluşturmak için +, -, * veya / gibi kesme çizgili operatörler desteklenmez. Bunun yerine, SDK tarafından sağlanan operatörleri (ör. Plus
veya Minus
) kullanın.
Ekle
Toplama operatörü .plus( )
.
DSL örneği
var totalCount = 0
...
totalCount = totalCount.plus(1)
Çıkarma
Çıkarma operatörü .minus( )
.
DSL örneği
var countdown = 10
...
countdown = countdown.minus(1)
Çarpma
Çarpma operatörü .multiply( )
.
DSL örneği
val millis = seconds.multiply(1000)
Bölme
Bölme operatörü .divide( )
.
DSL örneği
val rpm = revolutions.divide(minutes)
Mantıksal operatörler
ve
İki ifadeyi mantıksal bir VE ifadesinde 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
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
değil
Bir ifadenin mantıksal değerini olumsuzlar.
İfade | Sonuç |
---|---|
true |
false |
false |
true |
DSL örneği
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
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
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}