ট্র্যাক
/
jq
jq
/
সিলেবাস
/
কন্ডিশনাল
কন

কন্ডিশনাল মধ্যে jq

7টি অনুশীলনী

কন্ডিশনাল সম্পর্কে

if এক্সপ্রেশন

jq-এর শর্তসাপেক্ষ এক্সপ্রেশন হলো if A then B else C end।

jq-এর সব বিল্টইনের মতোই if-then-else একটি ফিল্টার: এটি একটি ইনপুট নেয় আর একটি আউটপুট তৈরি করে।

A এক্সপ্রেশনটি যদি একটি "ট্রুথি" মান তৈরি করে, তাহলে if ফিল্টারটি B মূল্যায়ন করে। অন্যথায় এটি C মূল্যায়ন করে। if ফিল্টারে দেওয়া ইনপুটটি B বা C-তে পাঠানো হয়।

42 | if . < 50 then "small" else "big" end      # => "small"
5 | if . % 2 == 0 then . / 2 else . * 4 end     # => 20
Note

else ক্লজটি ঐচ্ছিক; নিচের দুটি স্টেটমেন্ট সমতুল্য।

if A then B else . end
if A then B end

নেস্টেড if স্টেটমেন্ট

elif দিয়ে আরও শর্ত যোগ করা যায়।

42 | if . < 33 then "small"
     elif . < 66 then "medium"
     else "big"
     end
# => "medium"

আপনার যতগুলো দরকার, ততগুলো elif ক্লজ ব্যবহার করুন।

ট্রুথিনেস

jq-তে একমাত্র "ফলস" মানগুলো হলো false এবং null। বাকি সবকিছুই "ট্রু", এমনকি শূন্য সংখ্যা, খালি স্ট্রিং, অ্যারে আর অবজেক্টও।

বুলিয়ান অপারেটর

জটিল কোয়েরি তৈরি করতে বুলিয়ান অপারেটর and আর or ব্যবহার করা যায়।

42 | if . < 33 or . > 66 then "big or small"
     else "medium"
     end

নেগেট করতে not ব্যবহার করুন। এটি একটি ফিল্টার, অপারেটর নয়।

42 | if (. < 33 or . > 66 | not) then "medium"
     else "big or small"
     end

অল্টারনেটিভ অপারেটর

অল্টারনেটিভ অপারেটর দিয়ে আপনি একটি "ডিফল্ট" মান নির্দিষ্ট করতে পারেন, যদি কোনো এক্সপ্রেশন ফলস বা null হয়।

A // B

# This is identical to
if A then A else B end

একটি উদাহরণ দেখে নেওয়া যাক

[3, 5, 18] | add / 2       # => 13
[]         | add / 2       # => error: null (null) and number (2) cannot be divided
[]         | add // 0 / 2  # => 0

আরও কি আছে?

অন্য ভাষা থেকে আসা প্রোগ্রামাররা হয়তো আরও নানা রকম শর্তসাপেক্ষ কমান্ড আশা করতে পারেন, যেমন cond, case, switch, when, unless, টার্নারি অপারেটর ইত্যাদি। উপরে তালিকা করা অপারেটরগুলোই jq-তে যা যা আছে তার সবকিছু।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

কন্ডিশনাল শিখুন

অনুশীলন লক করা আছে

কন্ডিশনাল অনুশীলন করতে আরও 6টি অনুশীলনী আনলক করুন