我想在我的模块中创建一个静态变量。我怎样才能做到这一点?我可以使用our
orstate
吗?
这是我想要实现的示例:
use MyModule;
MyModule::increase_count(); # should return 0
MyModule::increase_count(); # should return 1
MyModule::increase_count(); # should return 2
我想在我的模块中创建一个静态变量。我怎样才能做到这一点?我可以使用our
orstate
吗?
这是我想要实现的示例:
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
最小化符号的可见性。如果您必须在多个 subs 之间共享可见性,您可以在一个块中包含一个词法变量:
{
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++;
}