1

私はmy_listこのように定義した(構造体のリスト)を持っています:

struct my_struct {
    comparator[2] : list of int;
    something_else[2] : list of uint;
};

my_list[10] : list of my_struct;

次のように、コンパレータ [0] とコンパレータ [1] の値の分布 (両方で同じ分布) を制限する必要があります。

my_list[10] : list of my_struct;
keep soft for each (elem) in my_list {
   soft elem.comparator[0] select {
      30: [-1000 .. -50]; -- Big negative values
      40: [-49 ..49]; -- Medium values
      30: [50..1000]; -- Big positive values           
    };
    // Same for elem.comparator[1]
 };

私が得るコンパイルエラー:

*** Error: Unrecognized exp
    [Unrecognized expression 'elem.comparator[0] select {30:
[-1000..-50];40: [-49..49];30: [50..1000];}']
                at line
...
       soft elem.comparator[0] select {

リストのリスト内に存在する値の分布を制限する方法は? 助けてくれてありがとう。

4

1 に答える 1

1

それは問題ではありませんがsoft、そこに2回あります。==前に a を付けるのを忘れましたselect。私は次のように書きます:

  keep for each (elem) in my_list {
    soft elem.comparator[0] == select {
      30: [-1000 .. -50]; -- Big negative values
      40: [-49 ..49]; -- Medium values
      30: [50..1000]; -- Big positive values           
    };
    // Same for elem.comparator[1]
  };

またはkeep soft for each ...、あなたの場合はおそらくよりきれいです。soft少し醜いように見えますが、両方の s をそのままにしておくこともできます。

于 2014-11-24T19:51:16.123 に答える