演算子 ​

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

演算子は値を組み合わせて新しい値を作成します。算術演算子や比較演算子など、ほとんどの演算子は他の言語と同じように動作します。 WEL固有の演算子は2つあります。

  • パイプライン: >>は複数ステップの変換を、上から下へ読める1行にします。
  • フォールバック: |と|?は、ネストされた条件式の代わりにデフォルト値を提供します。

_ は、これらの例で式が受け取る入力です。詳細については、入力変数を参照してください。

機能の提供状況

WELは現在、一部のお客様にご利用いただけます。ご利用のワークスペースで利用可能かどうかを確認するには、Customer Success Representativeにお問い合わせください。

優先順位 ​

次の表に、演算子を優先順位別に示します。表の上位にある演算子は、式内の位置に関係なく、下位にある演算子より先に実行されます。かっこ(())は優先順位を上書きします。式の一部をかっこで囲むと、その部分が先に評価されます。

優先順位演算子意味
1. ()フィールドアクセス、関数呼び出し
2! not -単項プレフィックス
3^べき乗
4* / %乗算、除算、剰余
5+ -加算、減算
6++ >> | |?連結、パイプ、フォールバック、tryフォールバック
7== != < > <= >= in比較と包含
8and論理AND
9or論理OR

算術 ​

+ - * / % ^はInteger、Float、Decimalで動作します。

操作Formula結果
+: 加算1 + 2.53.5
-: 減算5 - 23
*: 乗算4 * 312
/: 除算10 / 33
%: 剰余10 % 31
^: べき乗(指数)2 ^ 101024

INTEGER除算では切り捨てが行われます

2つのInteger値を除算すると、結果は切り捨てられます。小数の結果を得るには一方をFloatまたはDecimalにし、金額にはDecimalを使用します。例:

Formula結果
10 / 33
10.0 / 33.3333333333333335

ゼロで除算すると、無限大を生成するのではなくE200が発生します。

DecimalとFloatは混在できません。算術をサポートする型については、データ型を参照してください。

日付と期間 ​

演算子は時間データ型でも動作します。 PlainDateにIntegerを加算すると日数を追加し、2つの日付を減算するとその間の日数を返し、2つの時点を減算するとDurationを返します。月の長さによって答えが変わるカレンダー計算では、代わりにadvance_dateまたはadd_monthsを使用します。

操作Formula結果
+: 日付に日数を追加PlainDate('2026-03-15') + 102026-03-25
-: 2つの日付を減算(日数)PlainDate('2026-03-15') - PlainDate('2026-01-01')73
+: 時点に期間を追加DateTime('2026-01-01T10:00:00Z') + Duration('PT2H')2026-01-01T12:00:00Z
-: 2つの時点を減算(期間)DateTime('2026-03-01T00:00:00Z') - DateTime('2026-01-01T00:00:00Z')PT1416H

連結 ​

++は同じ型の2つの値を結合します。

操作Formula結果
++: 2つの文字列を結合'SO-' ++ '1001'SO-1001
++: 2つのリストを結合[1, 2] ++ [3][1, 2, 3]

型を混在させるとE101が発生します。 'x' ++ 1はエラーであり、x1ではありません。 String(...)で変換するか、補間時に変換するf-stringを使用します。

パイプライン演算子 ​

>>は、左側の値を右側の関数の最初の引数として渡します。

操作Formula結果
>>: 値を関数にパイプ'acme' >> upperACME

パイプラインは、ステップが実行される順序で左から右に読めます。次の例では、最初にlower、次にtrim、次にupperが実行されます。

text
_.email >> lower >> trim >> upper

ネストされた呼び出しでもパイプラインと同じ結果を得られますが、変換を内側から外側へ読む必要があります。

text
upper(trim(lower(_.email)))

これは、ネストするとすぐに読みづらくなるラムダでは特に重要です。

フォールバック ​

フォールバック演算子は、異なる問題を解決します。

Null値フォールバック ​

|はnull値を処理します。

操作Formula結果
|: nullの場合にデフォルト値を使用null | 'default'デフォルト

presenceは、空の文字列、空白のみの文字列、空のリスト、空のマップを含むすべての種類の欠落をnullとして報告するため、1つのフォールバック演算子(|)ですべてをキャッチできます。

text
presence(_.display_name) | 'Unknown'

エラーフォールバック ​

|?はエラーをキャッチします。

操作Formula結果
|?: 式がキャッチ可能なエラーを発生させた場合にデフォルト値を使用1 / 0 |? 'error'エラー

存在しないフィールドを読み取ると、nullを生成するのではなくE104が発生します。そのため、|はそれをキャッチせず、|?はキャッチします。

text
_.customer.nickname |? 'none'

キャッチ可能なエラーについては、エラーコードを参照してください。

フォールバックは判断であり、修正ではありません

|? 0を通貨フィールドで使用すると、不正な形式の金額が気づかれずに0になり、ジョブは成功として報告されます。それが正しい場合もあれば、誤った請求書が気づかれずに送信される場合もあります。

欠落が想定され、デフォルト値が本当に正しい場合にのみ、フォールバックを使用してください。そうでない場合は、エラーを伝播させてください。失敗したジョブは目に見えますが、誤った数値は目に見えません。

比較 ​

== != < > <= >=は2つの値を比較します。

操作Formula結果
==: 等しい1 == 1.0true
!=: 等しくない1 != 2true
<: 未満1 < 2true
>: より大きい2 > 1true
<=: 以下2 <= 2true
>=: 以上2 >= 3false

数値比較は値で行われるため、同じ数値を保持するIntegerとFloatは等しくなります。

同じに見えるテキストでも、同じ文字が複数の方法で保存されることがあるため、常に等しいとは限りません。 2つの異なるシステムのテキストを比較するには、unicode_compareを使用します。

包含 ​

inは、値がリストの要素であるかどうかをテストします。

操作Formula結果
in: リストメンバーシップをテスト2 in [1, 2, 3]true

inはリスト専用です。他の型には、次の代替手段のいずれかを使用します。

  • 部分文字列: contains?を使用します。 'WID' in 'WID-1'はE101を発生させます。
  • マップキー: has_key?を使用します。 'a' in {a: 1}はE101を発生させます。

論理 ​

and、or、notは単語で記述します。

操作Formula結果
and: 論理AND5 > 3 and 2 < 1false
or: 論理OR5 > 3 or 2 < 1true
not: 論理否定not truefalse

条件 ​

if ... then ... else ...は式です。値を生成するため、値を置ける場所ならどこにでも使用できます。

操作Formula結果
if...then...else: 条件式if 5 > 3 then 'yes' else 'no'yes

次の例は、マップ内の条件を示しています。

text
{
  tier: if _.total > 1000 then 'gold' else 'standard'
}

最終更新日: