1

我想在我的模块中创建一个静态变量。我怎样才能做到这一点?我可以使用ourorstate吗?

这是我想要实现的示例:

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最小化符号的可见性。如果您必须在多个 subs 之间共享可见性,您可以在一个块中包含一个词法变量:

{
  my $count = 0;
  sub increase_count { $count++ }
  sub current_count  { $count   }
  sub decrease_count { $count-- }
}
于 2013-06-23T11:39:02.240 回答
1

如果您想$counter直接在包之外访问变量,请MyModule使用our,但如果您不这样做,那么my应该使用,

package MyModule;

my $counter = 0;
sub increase_count {

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