[Notes/Domino] 順列演算の便利な使い方
※このエントリは旧コンテンツから移行したものです。(初出:2004/8/8)
ノーツの式の便利な演算として順列演算というものがあります。
たとえば "A":"B" + "C":"D" というのは並列演算です。演算結果は "AC":"BD" となります。これに対して順列演算では "A":"B" *+ "C":"D" のように記述し、演算結果は "AC":"AD":"BC":"BD" となります。
つまり、並列演算は以下のように文字通り並行的に処理するのに対し、
"A":"B" | | "C":"D"
順列演算は以下のようにリストのそれぞれに対してすべて演算するというわけです。
"A":"B" | × | "C":"D"
このことを利用すると、式が簡潔に書ける場合があります。
1."00"~"99"のリストを作成する
ダイアログリストの選択肢などで、"00"~"99"のリストを作成したい場合、以下のように書けば簡単です。
numlist := "0":"1":"2":"3":"4":"5":"6":"7":"8":"9"; numlist *+ numlist
"01"~"99"の場合は、以下のようにすればよいです。
numlist := "0":"1":"2":"3":"4":"5":"6":"7":"8":"9"; @Subset(numlist *+ numlist; -99)
# まぁR6ではループがサポートされたので、こんなことやらなくてもいい場合がありますけど(^^;
2.特定ロールが含まれるかどうかの判断
ロールが複数あるデータベースで、ふたつのロールのどちらかが含まれるユーザーにのみ表示する、という非表示式を作りたい場合、以下のように書けます。
!(@UserRoles *= "[ロールA]":"[ロールB]")
ひとつのロールが含まれるかどうかなら、!(@UserRoles = "[ロールA]") でできますが、ふたつ以上の場合は、ロールの順番に気をつけなければならないため、上記のようにするのが安全でしょう。
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。