Operator memungkinkan Anda memeriksa nilai atribut sifat terhadap nilai
tertentu, membandingkannya satu sama lain, dan menggabungkan ekspresi yang digunakan di
node condition
.
Operator tersedia melalui pernyataan import
berikut:
import GoogleHomeSDK
Operator perbandingan
antara
Mengevaluasi ke true
jika nilai Ekspresi 1 berada di antara Ekspresi
2 dan Ekspresi 3 (inklusif). Ekspresi diberi peringkat secara berbeda, bergantung pada
jenis datanya. Jenis data sederhana seperti angka dan string diberi peringkat
dengan cara yang sama seperti di Swift.
Ekspresi 1 | Ekspresi 2 | Ekspresi 3 | Hasil |
---|---|---|---|
6 |
1 |
3 |
false |
2 |
1 |
3 |
true |
Contoh DSL
let time = stateReader(structure, Google.TimeTrait)
condition {
time.currentTime
.between(
time.sunsetTime,
time.sunriseTime)
}
sama dengan
Bernilai true
jika Ekspresi 1 sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
false |
2 |
2 |
true |
Contoh DSL
lightOnOffState.onOff.equals(true)
greaterThan
Bernilai true
jika Ekspresi 1 lebih besar dari Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
true |
1 |
6 |
false |
Contoh DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.greaterThan(1555)
greaterThanOrEquals
Mengevaluasi ke true
jika Ekspresi 1 lebih besar dari atau sama dengan Ekspresi
2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
8 |
6 |
true |
6 |
6 |
true |
1 |
6 |
false |
Contoh DSL
starterNode.measuredValue.greaterThanOrEquals(50)
lessThan
bernilai true
jika Ekspresi 1 kurang dari Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
false |
1 |
6 |
true |
Contoh DSL
// 1555 = 15 degrees C ~ 60 degrees F
temperatureMeasurement.measuredValue.lessThan(1555)
lessThanOrEquals
Bernilai true
jika Ekspresi 1 kurang dari atau sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
8 |
6 |
false |
6 |
6 |
true |
1 |
6 |
true |
Contoh DSL
starterNode.measuredValue.lessThanOrEquals(50)
notEquals
Bernilai true
jika Ekspresi 1 tidak sama dengan Ekspresi 2.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
6 |
1 |
true |
1 |
6 |
true |
2 |
2 |
false |
Contoh DSL
occupancySensorStarter.occupancy.notEquals(.occupied)
Operator aritmatika
Operator infix seperti +, -, *, atau / tidak didukung untuk membuat ekspresi otomatisasi
di Swift. Sebagai gantinya, gunakan operator yang disediakan oleh SDK, seperti
Plus
atau
Minus
.
Tambahkan
Operator penambahan .plus( )
.
Contoh DSL
var totalCount = 0
...
totalCount = totalCount.plus(1)
Kurangi
Operator pengurangan .minus( )
.
Contoh DSL
var countdown = 10
...
countdown = countdown.minus(1)
Kali
Operator perkalian .multiply( )
.
Contoh DSL
val millis = seconds.multiply(1000)
Bagi
Operator pembagian .divide( )
.
Contoh DSL
val rpm = revolutions.divide(minutes)
Operator logika
dan
Menggabungkan dua ekspresi dalam ekspresi AND logika, yang dievaluasi ke true
saat
kedua ekspresinya adalah true
.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
false |
false |
false |
true |
false |
false |
false |
true |
false |
true |
true |
true |
Contoh DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2)
}
tidak
Menegasikan nilai logika ekspresi.
Ekspresi | Hasil |
---|---|
true |
false |
false |
true |
Contoh DSL
condition {
let exp1 = armState.armState
let exp2 = doorLockState.lockState
exp1.and(exp2.not())
}
atau
Menggabungkan dua ekspresi menjadi ekspresi OR logis.
Ekspresi 1 | Ekspresi 2 | Hasil |
---|---|---|
false |
false |
false |
true |
false |
true |
false |
true |
true |
Contoh DSL
condition {
let exp1 = doorLockState.lockState.equals(.unlocked)
let exp2 = contactSensorState.stateValue.equals(false)
exp1.or(exp2)
}