演算子と式評価
標準の算術演算子を使用して、テンプレートのコンテキストで値を計算できます。
記号 | 説明 |
---|---|
+ | 2つのオブジェクト同士を加算します。これは通常、数値の加算に使用します。リストの文字列を連結する場合は、代わりに~ を使用します。 |
- | ある数値を別の数値から減算します。 |
/ | 数値を除算します。 |
% | 数値を除算した余りを返します。 |
// | 2つの数値を除算した余りを整数に切り捨てて返します。例:{{ 20 // 7 }} は2 です。 |
* | 数値を乗算します。 |
** | 左辺のオペランドを右辺のオペランドで累乗します。 |
比較演算子を使用すると、テンプレートロジックに対して値を評価できます。このリンク先のif文で、比較演算子の使用例を確認できます。
記号 | 短縮形 | 説明 |
---|---|---|
== | eq | 次の値に等しい。2つのオブジェクトが等しい場合、trueと評価されます。 |
!= | ne | 次の値に等しくない。2つのオブジェクトが等しくない場合、trueと評価されます。 |
> | gt | 次の値より大きい。左辺の値が右辺の値よりも大きい場合、trueと評価されます。 |
>= | gte | 次の値以上。左辺の値が右辺の値と同じかそれよりも大きい場合、trueと評価されます。 |
< | lt | 次の値より小さい。左辺の値が右辺の値よりも小さい場合、trueと評価されます。 |
<= | lte | 次の値以下。左辺の値が右辺の値と同じかそれよりも小さい場合、trueと評価されます。 |
短縮形の比較演算子は、|selectattr()
などの式を評価するフィルターで使用できます。
論理演算子を使用すると、複数の式を1つのステートメント(文)として結合できます。
記号 | 説明 |
---|---|
and | 左辺のオペランドと右辺のオペランドの両方がtrueと評価される場合、trueを返します。 |
or | 左辺のオペランドまたは右辺のオペランドのいずれかがtrueと評価される場合、trueを返します。 |
not | ステートメントの否定に、isと併せて使用します。後述の例を参照してください。 |
(expr) | 演算順を示すために、式をグループ化します。例:(10 - 2) * 変数 |
?: | 3項演算子には3つの引数(式、true条件、false条件)があります。式を評価し、該当した条件を返します。 |
以下に、さまざまなタスクを実行するために使用できる、その他の重要なHubL演算子を示します。
記号 | 説明 |
---|---|
in | 値がシーケンス内に含まれているかどうかをチェックします。 |
is | 式評価を実行します。 |
| | フィルターを適用します。 |
~ | 値を連結します。 |
式評価は、論理演算子を使用して評価できる各種のブール条件です。
defined式評価では、変数がテンプレートのコンテキスト内で定義済みかどうかをチェックします。演算子を使わずにif文を記述してこの式評価を使用することもできますが、その場合は既定で、変数が定義されているかどうかだけがチェックされます。
以下の例では、カラーモジュールのcolorパラメーターが評価されます。colorパラメーターに値がない場合、既定背景色の黒がテンプレートによってレンダリングされます。値が定義されている場合、ユーザーが設定した背景色がテンプレートによってレンダリングされます。
divisibleby式評価を使用すると、オブジェクトを別の数値で割り切れるかどうかを評価できます。
例えば、以下のforループは、動物の種類のリストを反復処理するために作成されています。動物の各種類がdiv内に出力され、5つ目ごとのdivに異なるインラインスタイルが適用されます(幅:100%)。このコンセプトをブログに適用すると、特定のパターンの記事に別のマークアップをレンダリングできます。forループとloop.indexの詳細については、こちらの記事を参照してください。
equalto式評価では、変数の値が定数または別の変数の値と等しいかどうかをチェックします。これと同じ評価は、==演算子を使用して行うこともできます。
以下の例では、ループ内の記事の合計数に応じてブログ記事の幅を調整します。この出力例では、ブログに4件の記事があると仮定しています。
even式評価では、数値型変数の値が偶数かどうかをチェックします。
以下の例は、ブログ一覧の単純なループを示しています。この例では、ループの現在の反復数(イテレーション)が偶数の場合、その記事項目のdivにeven-postクラスを割り当てます。それ以外の場合は、odd-postクラスを割り当てます。
変数が反復可能であり、ループ処理を適用できるかどうかをチェックします。
以下の例では、「jobs」という変数が反復可能かどうかをチェックします 。この変数にジョブのリストが格納されている場合、if文がtrueと評価されて、ループが実行されます。変数に1つの値しか格納されていない場合は、if文により、別のマークアップを使用してその値が出力されます。ループの詳細については、こちらを参照してください。
lower式評価は、文字列が小文字の場合にtrueと評価されます。
以下の例では、unless文と小文字フィルターを使用して、テキストモジュールに入力されるテキストの文字列が常に小文字になるようにしています。
odd式評価では、数値型変数の値が奇数かどうかをチェックします。
以下の例は、前述のeven式評価の例の逆バージョンです。
sameas式評価では、2つの変数の値が同じかどうかをチェックします。
以下の例では、2つの変数を設定してから、これらの変数の値が同じかどうかをチェックします。
sequence式評価は、変数がシーケンスかどうかをチェックするという点でiterable式評価と似ています。
以下の例では、変数がシーケンスかどうかをチェックしてから、音楽ジャンルのシーケンスを反復処理します。
この式評価では、文字列が特定の文字列で始まるかどうかをチェックします。「is」演算子と組み合わせて使用します。
truthy式評価では、式がtrueと評価されるかどうかをチェックします。
以下の例では、ブール値チェックボックスモジュールを使用してアラートメッセージを表示します。
undefined式評価では、テンプレートのコンテキスト内で変数が未定義かどうかをチェックします。この評価はnone式評価とは異なります。undefined式評価でtrueが返されるのは、変数が存在しても値が格納されていない場合です。一方、none式評価では変数にnull値が格納されている場合にtrueが返されます。
以下の例では、テンプレートで変数「my_var」の有無をチェックします。
upper式評価は、文字列が大文字の場合にtrueと評価されます。以下の例は、前述のlower式評価の例の逆バージョンです。
貴重なご意見をありがとうございました。