المسارات
/
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 تمارين إضافية لممارسة الجمل الشرطية