DSL 演算子のリファレンス

演算子を使用すると、特徴属性の値を特定の値と照合したり、値同士を比較したり、condition ノードで使用される式を組み合わせたりできます。

演算子は、次の import ステートメントで使用できます。

import com.google.home.automation.and
import com.google.home.automation.between
import com.google.home.automation.contains
import com.google.home.automation.equals
import com.google.home.automation.greaterThan
import com.google.home.automation.greaterThanOrEquals
import com.google.home.automation.lessThan
import com.google.home.automation.not
import com.google.home.automation.notEquals
import com.google.home.automation.or

比較演算子

次の間にある

式 1 の値が式 2 と式 3 の値の範囲内にある場合、true に評価されます。式のランク付けは、データ型によって異なります。数値や文字列などの単純なデータ型は、Kotlin と同じ方法でランク付けされます。

式 1 式 2 式 3 結果
6 1 3 false
2 1 3 true

DSL の例

val time = stateReader<_>(structure, Time)
condition() {
  expression = time.currentTime
     .between(
      time.sunsetTime,
      time.sunriseTime)
}

equals

式 1 が式 2 と等しい場合は true と評価されます。

式 1 式 2 結果
6 1 false
2 2 true

DSL の例

washer.operationalState equals STOPPED

greaterThan

式 1 が式 2 より大きい場合は true と評価されます。

式 1 式 2 結果
6 1 true
1 6 false

DSL の例

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

式 1 が式 2 以上の場合、true と評価されます。

式 1 式 2 結果
8 6 true
6 6 true
1 6 false

DSL の例

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

式 1 が式 2 より小さい場合は true と評価されます。

式 1 式 2 結果
6 1 false
1 6 true

DSL の例

time.currentTime lessThan LocalTime.of(22,0,0,0)

lessThanOrEquals

式 1 が式 2 以下の場合、true と評価されます。

式 1 式 2 結果
8 6 false
6 6 true
1 6 true

DSL の例

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

式 1 が式 2 と等しくない場合は、true と評価されます。

式 1 式 2 結果
6 1 true
1 6 true
2 2 false

DSL の例

occupancyStateChange.occupied notEquals 0

算術演算子

追加

加算演算子(+)。

DSL の例

var totalCount = 0
...
totalCount = totalCount + 1

減算

減算演算子(-)。

DSL の例

var countdown = 10
...
countdown = countdown - 1

乗算

乗算演算子(*)。

DSL の例

val millis = seconds * 1000

除算

除算演算子(/)。

DSL の例

val rpm = revolutions / minutes

論理演算子

2 つの式を論理 AND 式で結合し、両方の式が true の場合に true と評価します。

式 1 式 2 結果
false false false
true false false
false true false
true true true

DSL の例

((device.occupied notEquals 0) and
   time.currentTime.between(time.sunriseTime, time.sunsetTime))

いない

式の論理値を否定します。

結果
true false
false true

DSL の例

time.currentTime not (between(time.sunriseTime, time.sunsetTime))

または

2 つの式を論理 OR 式に結合します。

式 1 式 2 結果
false false false
true false true
false true true

DSL の例

(time.currentTime equals LocalTime.of(10,0,0,0)) or
  (time.currentTime equals LocalTime.of(22,0,0,0))