অপারেটর ব্যবহার করে আপনি ট্রেইট অ্যাট্রিবিউটের মান নির্দিষ্ট মানের সাথে মিলিয়ে দেখতে পারেন, সেগুলোকে একে অপরের সাথে তুলনা করতে পারেন এবং 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 হয়। ডেটা টাইপের ওপর নির্ভর করে এক্সপ্রেশনগুলোর ক্রম ভিন্ন হয়। সংখ্যা এবং স্ট্রিং-এর মতো সাধারণ ডেটা টাইপগুলোর ক্রম কোটলিনের মতোই রাখা হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | অভিব্যক্তি ৩ | ফলাফল |
|---|---|---|---|
6 | 1 | 3 | false |
2 | 1 | 3 | true |
ডিএসএল উদাহরণ
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),
)
তবে, আপনি শুধু পূর্ণ তারিখেই সীমাবদ্ধ নন। অটোমেশন ডিএসএল আপনাকে বিভিন্ন উপায়ে তারিখের একটি পরিসর প্রকাশ করার সুযোগও দেয়:
- শুধুমাত্র বছর এবং মাস ব্যবহার করে:
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 |
ডিএসএল উদাহরণ
washer.operationalState equals STOPPED
বৃহত্তর
যখন এক্সপ্রেশন ১, এক্সপ্রেশন ২ অপেক্ষা বৃহত্তর হয়, তখন এর মান true ।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
6 | 1 | true |
1 | 6 | false |
ডিএসএল উদাহরণ
( blindsPosition.currentPositionLift greaterThan 0u )
বৃহত্তর বা সমান
যখন এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর চেয়ে বড় বা সমান হয়, তখন এর মান true হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
8 | 6 | true |
6 | 6 | true |
1 | 6 | false |
ডিএসএল উদাহরণ
( starterNode.measuredValue greaterThanOrEquals 50 )
কম
যখন এক্সপ্রেশন ১, এক্সপ্রেশন ২ অপেক্ষা ছোট হয়, তখন এর মান true হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
6 | 1 | false |
1 | 6 | true |
ডিএসএল উদাহরণ
time.currentTime lessThan LocalTime.of(22,0,0,0)
কম বা সমান
যখন এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর চেয়ে কম বা সমান হয়, তখন এর মান true হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
8 | 6 | false |
6 | 6 | true |
1 | 6 | true |
ডিএসএল উদাহরণ
( starterNode.measuredValue lessThanOrEquals 25 )
সমান নয়
যখন এক্সপ্রেশন ১, এক্সপ্রেশন ২-এর সমান নয়, তখন এর মান true হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
6 | 1 | true |
1 | 6 | true |
2 | 2 | false |
ডিএসএল উদাহরণ
occupancyStateChange.occupied notEquals 0
গাণিতিক অপারেটর
যোগ করুন
যোগ অপারেটর ( + )।
ডিএসএল উদাহরণ
var totalCount = 0
...
totalCount = totalCount + 1
বিয়োগ করুন
বিয়োগ অপারেটর ( - )।
ডিএসএল উদাহরণ
var countdown = 10
...
countdown = countdown - 1
গুণ করুন
গুণন অপারেটর ( * )।
ডিএসএল উদাহরণ
val millis = seconds * 1000
ভাগ করুন
ভাগ চিহ্ন ( / )
ডিএসএল উদাহরণ
val rpm = revolutions / minutes
যৌক্তিক অপারেটর
এবং
দুটি এক্সপ্রেশনকে একটি লজিক্যাল AND এক্সপ্রেশনে একত্রিত করে, যা উভয় এক্সপ্রেশন true হলে true বলে বিবেচিত হয়।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
false | false | false |
true | false | false |
false | true | false |
true | true | true |
ডিএসএল উদাহরণ
((device.occupied notEquals 0) and
time.currentTime.between(time.sunriseTime, time.sunsetTime))
না
কোনো এক্সপ্রেশনের লজিক্যাল মানকে নাকচ করে।
| অভিব্যক্তি | ফলাফল |
|---|---|
true | false |
false | true |
ডিএসএল উদাহরণ
time.currentTime not (between(time.sunriseTime, time.sunsetTime))
অথবা
দুটি এক্সপ্রেশনকে একত্রিত করে একটি লজিক্যাল OR এক্সপ্রেশন তৈরি করে।
| অভিব্যক্তি ১ | অভিব্যক্তি ২ | ফলাফল |
|---|---|---|
false | false | false |
true | false | true |
false | true | true |
ডিএসএল উদাহরণ
(time.currentTime equals LocalTime.of(10,0,0,0)) or
(time.currentTime equals LocalTime.of(22,0,0,0))