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
Swift'te otomasyon ifadeleri oluşturmak için +, -, * veya / gibi infix operatörleri 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)
}