Android 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

তুলনাকারী অপারেটর

এর মধ্যে

এক্সপ্রেশন ১-এর ভ্যালু এক্সপ্রেশন ২ ও এক্সপ্রেশন ৩-এর (অন্তর্ভুক্ত) মধ্যে হলে, true হিসেবে মূল্যায়ন করে। ডেটার ধরনের উপর নির্ভর করে এক্সপ্রেশনকে আলাদাভাবে র‍্যাঙ্ক করা হয়। Kotlin-এ যেভাবে নম্বর ও স্ট্রিংয়ের মতো সাধারণ ডেটার ধরন র‍্যাঙ্ক করা হয়, এখানেও একইভাবে করা হয়।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ Expression 3 ফলাফল
6 1 3 false
2 1 3 true

DSL example

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

between() ফাংশনের সাথে তারিখ ব্যবহার করুন

between() অপারেটর ব্যবহার করার সময়, আপনি তারিখের একটি রেঞ্জ নির্দিষ্ট করতে পারবেন:

val exp2 =
  time.currentDate.between(
    LocalDate.of(2025, Month.OCTOBER, 1),
    LocalDate.of(2025, Month.DECEMBER, 15),
  )

তবে, আপনি সম্পূর্ণ তারিখের মধ্যে সীমাবদ্ধ নন। এছাড়াও, অটোমেশন DSL আপনাকে বিভিন্ন উপায়ে তারিখের রেঞ্জ প্রকাশ করতে দেয়:

  • শুধুমাত্র বছর ও মাস ব্যবহার করে:
val exp2 =
  time.currentDate.yearMonth.between(
    YearMonth.of(2024, Month.OCTOBER),
    YearMonth.of(2026, Month.JANUARY),
  )
  • শুধু মাস ও দিন ব্যবহার করে:
val exp2 =
  time.currentDate.monthDay.between(
    MonthDay.of(Month.OCTOBER, 1),
    MonthDay.of(Month.DECEMBER, 15),
  )
  • শুধুমাত্র মাসের দিন ব্যবহার করে:
val exp2 = time.currentDate.day.between(1, 15)

সমান

এক্সপ্রেশন ১ ও এক্সপ্রেশন ২ সমান হলে true হিসেবে মূল্যায়ন করা হয়।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
6 1 false
2 2 true

DSL example

washer.operationalState equals STOPPED

greaterThan

এক্সপ্রেশন ১ এক্সপ্রেশন ২-এর থেকে বড় হলে true হিসেবে মূল্যায়ন করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
6 1 true
1 6 false

DSL example

( blindsPosition.currentPositionLift greaterThan 0u )

greaterThanOrEquals

এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে বড় বা সমান হলে true মূল্যায়ন করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
8 6 true
6 6 true
1 6 false

DSL example

( starterNode.measuredValue greaterThanOrEquals 50 )

lessThan

এক্সপ্রেশন ১ এক্সপ্রেশন ২-এর থেকে কম হলে true হিসেবে মূল্যায়ন করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
6 1 false
1 6 true

DSL example

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

lessThanOrEquals

এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর থেকে কম বা সমান হলে true হিসেবে মূল্যায়ন করা হয়।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
8 6 false
6 6 true
1 6 true

DSL example

( starterNode.measuredValue lessThanOrEquals 25 )

notEquals

এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর সমান না হলে true হিসেবে মূল্যায়ন করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
6 1 true
1 6 true
2 2 false

DSL example

occupancyStateChange.occupied notEquals 0

পাটিগণিত অপারেটর

যোগ করুন

যোগ করার অপারেটর ( + )।

DSL example

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

বিয়োগ

বিয়োগ অপারেটর ( - )।

DSL example

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

গুণ

গুণ করার অপারেটর ( * ).

DSL example

val millis = seconds * 1000

ভাগ

ভাগ করার অপারেটর ( / ).

DSL example

val rpm = revolutions / minutes

লজিক্যাল অপারেটর

এবং

দুটি এক্সপ্রেশনকে লজিক্যাল AND এক্সপ্রেশনে একত্রিত করে, দুটি এক্সপ্রেশনই true হলে true হিসেবে মূল্যায়ন করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
false false false
true false false
false true false
true true true

DSL example

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

সম্ভব নয়

কোনও এক্সপ্রেশনের লজিক্যাল ভ্যালু নেগেট করে।

উদাহরণ
এক্সপ্রেশন ফলাফল
true false
false true

DSL example

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

অথবা

দুটি এক্সপ্রেশনকে একটি লজিক্যাল OR এক্সপ্রেশনে একত্রিত করে।

উদাহরণ
এক্সপ্রেশন ১ এক্সপ্রেশন ২ ফলাফল
false false false
true false true
false true true

DSL example

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