マニュアルより
jqは、JSONと同じデータ型をサポートしています。数値、文字列、真偽値、配列、オブジェクト(JSONの言い方では、文字列のキーだけを持つハッシュのことです)、そして"null"です。
ここでは数値に注目しましょう。
すべての数値は、整数であれそれ以外であれ、IEEE754倍精度浮動小数点数です。そのため、精度は53ビットに限られます。
数値には、おなじみの演算子を使えます。
算術演算:+、-、*、/、%
比較演算:==、!=、<、<=、>=、>
標準の数学関数
入力が1つの関数では、値をその関数にパイプで渡します。
$ jq -n '(1 | atan) * 4'
3.141592653589793
入力が2つの関数では、その関数は入力を無視し、値を仮引数として受け取ります(仮引数はセミコロンで区切るのでしたね)。
$ jq -n 'pow(2; 10)'
1024
関数の引数を区切るのはセミコロンで、カンマではありません。
jq式この演習を解くには、条件式について知っておく必要があります。
jqでは、条件式にif-then-else式を使います。これは_式_なので、パイプラインの中に置きます。
構文は次のとおりです:if CONDITION then TRUE_EXPR else FALSE_EXPR end。
else節は省略できます。
42 | if . < 33 then "small" else "larger" end
# => "larger"
条件を追加するにはelifを使います。
42 | if . < 33 then "small"
elif . < 67 then "medium"
else "large"
end
# => "medium"
この演習では、自動車工場の組立ラインの生産を分析するコードを書きます。
組立ラインの速度は0(停止)から10(最大)まで設定できます。
最も遅い速度(1)では、1時間に221台の車が生産されます。
生産台数は速度に比例して増えていきます。
つまり、速度を4に設定すると、1時間に4 * 221 = 884台の車が生産されるはずです。
ただし、速度が上がるほど欠陥のある車が生産される可能性が高くなり、そうした車は廃棄しなければなりません。
次の表は、速度が成功率にどのように影響するかを示しています。
1から4:成功率100%。5から8:成功率90%。9:成功率80%。10:成功率77%。取り組むタスクは2つです。
成功率を考慮して、組立ラインの1時間あたりの生産率を計算してください。
1分あたりに完成した、正常に動作する車が何台生産されるかを計算してください。