多値の扱い
多値の表記方法
式の値として多値を表現するときには、List関数を使用します。
例:
- 「とうきょう」「なごや」「おおさか」の3つの文字列を持つ多値を表現する場合
List(“とうきょう”,”なごや”,”おおさか”)
- 1、2、4、8の4つの整数を持つ多値を表現する場合
List(1,2,4,8)
多値に対する比較演算
多値に対する比較演算は、第一項と第二項のすべての組み合わせに対して比較され、結果がブール多値として返されます。したがって、返り値の要素数は次のようになります。(返り値の要素数)=(第一項の要素数)×(第二項の要素数)
ただし、オペレータが==か!=の場合は、各要素が第一項と第二項の共通要素であるかで比較します。このため、返り値の要素数は次のようになります。(返り値の要素数)=(第一項と第二項で大きいほうの要素数)
==が完全一致(返り値がすべてtrueになる)するのは、第一項を並び替えると第二項になる場合だけです。
例:多値Aが[1,2,3,3]、多値Bが[3,2]の場合
- ${多値A}<${多値B}
[ 1<3, 1<2, 2<3, 2<2, 3<3, 3<2, 3<3, 3<2 ]
→ [ true, true, true, false, false, false, false, false ]
- ${多値A}==${多値B}
1が多値Bに含まれるか → false
2が多値Bに含まれるか → true
3が多値Bに1個以上含まれるか → true
3が多値Bに2個以上含まれるか → false
→ [ false, true, true, false ]
- [1,2,3]==[3,2,1]
1が第二項に含まれるか → true
2が第二項に含まれるか → true
3が第二項に含まれるか → true
→ [ true, true, true ](完全一致)
ALL、ANYによる指定
多値に対する比較演算に対し、次の2通りで記述できます。遷移条件として式を記述する場合、全体が$ALL{ }で囲まれているものとして動作します。
- ALL
式の評価結果がすべてtrueの場合に真となる
- ANY
式の評価結果にtrueが含まれているときに真となる
この表記法は、以前のバージョンの式記述と互換性を保つために存在します。新規に式を記述するときは、AllまたはAny関数を使用してください。
指定方法は、それぞれ$ALL、$ANYで式を囲むことによって行います。
$ALL{式}, $ANY{式}は、それぞれAll(式)、Any(式)の各関数に変換されます。
例:
- $ALL{Begins(${URL},"http")}
ユーザー属性「URL」の値がすべてhttpで始まっている場合にTRUE
- $ANY{${部屋}=="空き部屋"}
ユーザー属性「部屋」の値に”空き部屋”がある場合にTRUE
- Begins(${URL}, "http")
最初の例と同じ
多値に対する数値演算
多値に対して数値演算するときは、第二項は単値でなければなりません。
第一項が多値で、第二項が単値の演算を行った場合、多値のすべての値に対し、単値の値が演算されます。
例:
- ${多値数値}+ 3
多値数値のすべての値を+3する
- ${多値数値} - ${単値数値}
多値数値のすべての値から単値数値を引く
- ${多値文字列} + “県”
多値文字列のすべてに「県」を結合する