是our
修改仅使用时严格编译激活使用全局变量,让或者甚至用于从正常的全局变量不同的一些额外的功能时严格熄灭?
是的,our
与未声明的全局变量相比,声明可以具有其他功能.但这些基本上是无关紧要的.
our
为全局变量(同名)创建词法别名.也就是说,在package Foo
,our $bar
并$Foo::bar
参考相同的变量.但是,前者仅适用于严格的词汇范围.
由于our
具有词法效果,别名还可以使用以下方式隐藏词法变量my
:
our $foo = 42; # give some value
my $foo = -1; # same name, different value
say "my gives $foo";
our $foo; # reintroduce the alias; shadow lexical
say "our gives $foo";
Run Code Online (Sandbox Code Playgroud)
如果你删除our
声明并运行它没有严格,这显然不会给出输出
my gives -1
our gives 42
Run Code Online (Sandbox Code Playgroud)
就像my
,our
可以采取一些额外的声明语法,例如属性:
use threads::shared;
our $foo :shared;
Run Code Online (Sandbox Code Playgroud)
您还可以使用fields
pragma 指定使用类型:
our Foo $foo;
Run Code Online (Sandbox Code Playgroud)
没有这个全局变量就无法做到这一点our
.
归档时间: |
|
查看次数: |
233 次 |
最近记录: |