1

継承したspecmanに次のコードがあります。

some_method() is {
    var a: bool;

    if (!a) {
        a = some_other_method();
    };
};

私の理解では、毎回some_method()呼び出され、新しく生成され、割り当てられる前にの値aをチェックする意味がありません。aしかし、ここで何かが足りないのかもしれません。たとえば、a静的な場合、このコードは理にかなっています。これは私の質問につながります。

specmanで変数を静的にする方法はありますか?

4

2 に答える 2

3

C のような静的変数はありません。メソッド内の変数は、False初期化されていない場合、デフォルト値 (この場合) を持っているため、正しいif (!a)はずTrueです。

が構造体メンバーの場合は状況が異なりa、他の OO 言語と同様に、いくつかのメソッド呼び出しにわたって値が保持され、チェックがより理にかなっています。

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

インタラクティブプロンプトでも次のようなものを確認できます。

Specman> var a : bool;
Specman> print a
  a = FALSE

インタラクティブなヘルプも便利です。たとえば、次を試してください。

Specman> help variable

をクリックして、エントリを (番号で) 選択しますsn_eref: variables : declaring。そこには、質問に関連するすべての情報が表示されます。

乾杯、ダニエル

于 2009-05-26T06:52:37.473 に答える