Referensi operator DSL iOS

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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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.

Contoh
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)
}