モジュールに静的変数を作成したいと考えています。どうやってやるの?またはを使用できますour
かstate
?
これが私が達成したいことの例です:
use MyModule;
MyModule::increase_count(); # should return 0
MyModule::increase_count(); # should return 1
MyModule::increase_count(); # should return 2
モジュールに静的変数を作成したいと考えています。どうやってやるの?またはを使用できますour
かstate
?
これが私が達成したいことの例です:
use MyModule;
MyModule::increase_count(); # should return 0
MyModule::increase_count(); # should return 1
MyModule::increase_count(); # should return 2
使用したい場合state
(これは良い考えです):
package MyModule;
# return the previous value
sub increase_count {
state $count = 0;
return $count++;
}
を使用state
すると、シンボルの可視性が最小限に抑えられます。複数のサブシステムで可視性を共有する必要がある場合は、レキシカル変数をブロックで囲むことができます。
{
my $count = 0;
sub increase_count { $count++ }
sub current_count { $count }
sub decrease_count { $count-- }
}
パッケージ$counter
の外部で変数に直接アクセスしたい場合は を使用しますが、そうでない場合は を使用する必要があります。MyModule
our
my
package MyModule;
my $counter = 0;
sub increase_count {
return $counter++;
}