Operatörler, özellik özelliklerinin değerini belirli değerlere göre kontrol etmenize, bunları birbiriyle karşılaştırmanıza ve condition
düğümlerinde kullanılan ifadeleri birleştirmenize olanak tanır.
Operatörler aşağıdaki import
ifadeleriyle kullanılabilir:
import GoogleHomeSDK
Karşılaştırma operatörleri
arasında
İfade 1'in değeri, İfade 2 ile İfade 3'ün değeri arasında (bu değerler dahil) olduğunda true
sonucunu verir. İfadeler, veri türlerine göre farklı şekilde sıralanır. Sayılar ve dizeler gibi basit veri türleri, Swift'tekiyle aynı şekilde sıralanır.
İfade 1 | İfade 2 | Expression 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
İfade 1, İfade 2'ye eşit olduğunda true
sonucunu verir.
İfade 1 | İfade 2 | Sonuç |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
DSL örneği
lightOnOffState.onOff.equals(true)
greaterThan
İfade 1, İfade 2'den 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
İfade 1, İfade 2'den büyük veya ona eşit olduğunda true
sonucunu verir.
İfade 1 | İ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.
İ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
İfade 1, İfade 2'den küçük veya ona eşit olduğunda true
değerini verir.
İfade 1 | İfade 2 | Sonuç |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
DSL örneği
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
İfade 1, İfade 2'ye eşit olmadığında true
sonucunu verir.
İfade 1 | İfade 2 | Sonuç |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
DSL örneği
occupancySensorStarter.occupancy.notEquals(.occupied)
Aritmetik operatörler
+, -, * veya / gibi infix operatörleri, Swift'te otomasyon ifadeleri oluşturmak için 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 AND ifadesinde birleştirir. Her iki ifade de true
olduğunda true
değerini verir.
İ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 ifadesinde 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)
}