我有两个类,比如说A和B,我需要在A类中设置一个静态变量(比如Java中的静态变量),并从类B中访问变量(在Java中使用ClassName.variable名称)。我可以在Perl中做这样的事情。
提前致谢
答案 0 :(得分:1)
tree .
├── foo.pl
└── lib
├── A.pm
└── B.pm
cat lib/A.pm
package A;
use strict;
use warnings;
our $foo = 7;
1;
cat lib/B.pm
package B;
use strict;
use warnings;
use feature qw/ say /;
use A;
say $A::foo;
1;
cat foo.pl
#!/usr/bin/env perl
use strict;
use warnings;
use B;
perl -Ilib foo.pl
7
答案 1 :(得分:0)
我真的不懂Java,所以我猜你的意思是"静态变量"与范围有关?在perl' my'和我们的'是你可以控制范围的方法,但我相信我说帽子包/模块制作变量的范围"私人"到它们被声明的.pm
文件(纠正这个和/或详细说明其他的perlistas!)。
关于如何"访问"他们的 Programming Perl(第2版)副本在第2章的 Scoped Declarations 一节中介绍了这一点。但这是第107页第一个脚注的简洁(略微编辑)部分:
库,模块和类使用包来存储它们自己的私有数据,因此它不会与主程序中的数据冲突。如果您看到有人写
$Some::stuff
,他们会使用包Some
中的$ stuff标量变量。
Exporter文档和此perlmonks node about global variables可能会帮助您更清楚地了解perl中的变量和范围。经典的 perlmonks 节点 - Variable Scoping in Perl: the basics - 经常被参考: - )
如果您已经知道如何编程(即在Java中)有时候另一个很好的参考(仅略微过时)"如何"在Perl做的事情是 The Perl Cookbook - 你可以在网上找到的摘录。
干杯,