これは興味深い質問です。率直に言って、私はこれを行うための組み込み機能を知りません(そのような機能の必要性は確かに有効ですが)。
過去に頻繁に行ったことは、「any」および「all」と呼ばれる、次のようなユーティリティ関数を作成することです(テストされていませんが、アイデアは得られます)。
function any
input Boolean vals[:];
output Boolean result;
algorithm
result := max({if i==true then 1 else 0 for i in vals})==1;
end any;
function all
input Boolean vals[:];
output Boolean result;
algorithm
result := min({if i==true then 1 else 0 for i in vals})==1;
end all;
これはあなたがしたことと似ていますが、配列内包表記を使用し、それを関数にカプセル化します。これにより、次のようなコードを記述できます。
if any(conditions) then ... else ...;
理想的には、これらの関数を組み込みの「削減演算子」のセット(minやmaxなど)に追加できますが、言語グループは、名前空間を汚染し、既存のコードとの潜在的な衝突を引き起こすため、このような演算子の導入についてはやや保守的な傾向があります。
when句を使用すると、少し注意が必要になることに注意してください。when句を使用すると、ベクトル構造があります。
when {cond1, cond2, cond3} then
...
end when;
これは非常に便利なセマンティクスを持っていますが、上記の「any」または「all」のいずれにも100%類似しているわけではありません。したがって、when句で条件のベクトルを使用する場合は、これが(仕様で)どのように処理されるかを確認するか、フォローアップの質問をしてください。詳細を説明できます(範囲をやや超えています)。この質問)。