مسیر
/
jq
jq
/
برنامه‌ی درسی
/
دستورهای شرطی
دس

دستورهای شرطی در jq

7 تمرین

درباره‌ی دستورهای شرطی

عبارت if

عبارت شرطی در jq به شکل if A then B else C end است.

if-then-else هم مانند همه‌ی توابع درونی jq یک «فیلتر» است: یک ورودی می‌گیرد و یک خروجی تولید می‌کند.

اگر عبارت 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

دستورهای شرطی تودرتو

می‌توان شرط‌های بیشتری را با 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 تمرین دیگر را باز کنید