if kifejezésA jq feltételes kifejezése az if A then B else C end.
Az if-then-else szűrő, akárcsak a jq összes beépített függvénye: bemenetet kap, és kimenetet állít elő.
Ha az A kifejezés „igaznak számító” értéket ad, akkor az if szűrő kiértékeli a B-t.
Ellenkező esetben a C-t értékeli ki.
Az if szűrő bemenetét a B vagy a C kapja meg.
42 | if . < 50 then "small" else "big" end # => "small"
5 | if . % 2 == 0 then . / 2 else . * 4 end # => 20
Az else ág elhagyható; a következő két utasítás egyenértékű.
if A then B else . end
if A then B end
Az elif kulcsszóval további feltételeket adhatsz hozzá.
42 | if . < 33 then "small"
elif . < 66 then "medium"
else "big"
end
# => "medium"
Annyi elif ágat használhatsz, amennyire szükséged van.
A jq-ban az egyetlen „hamis” érték a false és a null.
Minden más „igaz”, még a nulla, valamint az üres string, tömb és objektum is.
A Boolean-operátorok, az and és az or segítségével összetett lekérdezéseket építhetsz fel.
42 | if . < 33 or . > 66 then "big or small"
else "medium"
end
A tagadáshoz a not-ot használd. Ez egy szűrő, nem operátor.
42 | if (. < 33 or . > 66 | not) then "medium"
else "big or small"
end
Az alternatív operátorral „alapértelmezett” értéket adhatsz meg, ha egy kifejezés hamis vagy null.
A // B
# This is identical to
if A then A else B end
Íme egy példa:
[3, 5, 18] | add / 2 # => 13
[] | add / 2 # => error: null (null) and number (2) cannot be divided
[] | add // 0 / 2 # => 0
A más nyelvekből érkező programozók esetleg a feltételes utasítások szélesebb választékát várnák, például a cond, case, switch, when, unless kulcsszavakat, egy ternáris operátort és hasonlókat.
Pedig a jq mindössze a fent felsorolt operátorokat kínálja.