0

構造体のリストを作成し、特定の条件を満たす各構造体のフィールドの値を合計するのが好きです。例えば:

struct packet {
   val:int;
   cond:bool;
};
l:list of packet;

私が次のように書くとき:

keep l.all(it.cond).sum(it.val) == 1000;
I get an error: GEN_NO_GENERATABLE_NOTIF.

結果変数を定義すると:

sum_val : int;
keep sum_val == 100;

制約を次のように変更します: keep l.all(it.cond).sum(it.val) == sum_val;

矛盾してる!

どうすれば機能しますか?

4

2 に答える 2

3

リスト疑似メソッド「sum」と三項演算を使用する必要があります。

keep l.sum(it.cond ? It.val : 0) == 1000
于 2014-05-13T08:45:53.197 に答える