Треки
/
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. Усе інше вважається «правдою», навіть число нуль і порожній рядок тексту (англ. string), порожній масив та порожній обʼєкт.

Логічні оператори

Логічні оператори 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 вправ, щоб практикувати концепцію Умовні конструкції