Использование массива find в массиве find - PullRequest
0 голосов
/ 28 марта 2019

Есть ли способ использовать функцию локатора массива в качестве условия для функции локатора массива? Примерно так:

Я знаю, что могу просто перебрать массивы, но я надеюсь на более лаконичный метод

module tb;
  typedef struct {
    string name;
    int id;
  } positions_t;

  typedef struct {
    positions_t positions[];
    string unit_name;
  } injector_t;

  injector_t injectors[$] = '{
    '{
      unit_name: "unit1",
      positions: '{
        '{name: "ha", id:0},
        '{name: "he", id:0},
        '{name: "hi", id:0}
      }
    }
  };

  injector_t filtered_injectors[$];

  initial begin
    // LIKE THIS!
    filtered_injectors = injectors.find with (
      item.positions.find with (item.name == "hi")
    );
    $display("filtered list = %p", filtered_injectors);
  end
endmodule

1 Ответ

0 голосов
/ 29 марта 2019

find возвращает очередь, так что это похоже на работу

filtered_injectors = injectors.find with (
  item.positions.find with (item.name == "hi") != {}
);
...