05. 汎用メソッド

どのタイプの配列にも適用できる(らしい)メソッド一覧とサンプルを示します。各説明は、以下の配列定義を前提として記します。例は、SystemVerilog_3.1a.pdfの内容をベースに独自に味付けしています。

なお、以下に例にある ... with ( xxx ) のxxxは、表記が制約に似ているようで異なります。よって、... with ( x > 1; x < 5; ) のような表記は使えません。注意してください。その代わり、functionは使えましたので、必要のある方はfunctioinで条件処理をしてください。

string SA[5], qs[$]; // qsはstring型のqueueint IA[5], qi[$]; // qiはint型のqueueSA[0] = "aiueo";SA[1] = "ppp";SA[2] = "kkk";SA[3] = "hoge";SA[4] = "vita";IA[0] = 0; :IA[4] = 4;
  • find():条件にヒットしたデータをすべて取得します
    • qi = IA.find(x) with (x > 2); // 2より大きいものすべて
    • qi = IA.find(x) with (x > 2 && x < 5); // if 文の条件に書けるものならOKみたい
    • qi = IA.find(x) with (func(x)); // func(x)がtrueのもの
    • qs = SA.find(x) with (x == "vita"); // vita
    • qs = SA.find(x) with (x inside {"hoge", "vita"};
    • ※上記のように明示的なstring配列に対してfindするのは馬鹿げていますが…
  • find_index():条件にヒットしたデータのindex番号を取得します
    • qi = IA.find_index with (item > 2);
    • ※index検索では、条件は"item"という名前に対して与えます
  • find_first():条件にヒットした最初のアイテムを取得します
  • find_first_index():条件にヒットした最初のアイテムの格納されたindexを取得します
  • find_last():条件にヒットした最後のアイテムを取得します
  • find_last_index():条件にヒットした最後のアイテムの格納されたindexを取得します
  • max:最大値を取得します
    • qi = IA.max();
  • min:最小値を取得します
    • qi = IA.min();
  • unique:重複したアイテムを除いた配列を返します
    • qi = IA.unique();
  • unique_index:重複したアイテムを除いた配列のインデックス番号を取得します
    • qi = IA.unique_index();