1

モジュールに静的変数を作成したいと考えています。どうやってやるの?またはを使用できますourstate?

これが私が達成したいことの例です:

use MyModule;
MyModule::increase_count(); # should return 0
MyModule::increase_count(); # should return 1
MyModule::increase_count(); # should return 2
4

2 に答える 2

7

使用したい場合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-- }
}
于 2013-06-23T11:39:02.240 に答える
1

パッケージ$counterの外部で変数に直接アクセスしたい場合は を使用しますが、そうでない場合は を使用する必要があります。MyModuleourmy

package MyModule;

my $counter = 0;
sub increase_count {

  return $counter++;
}
于 2013-06-23T11:35:35.080 に答える