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
جملة 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.