gpt4 book ai didi

perl - 我们在 Perl 中定义的变量和普通全局变量之间有什么区别吗?

转载 作者:行者123 更新时间:2023-12-04 11:26:08 25 4
gpt4 key购买 nike

our修饰符仅在严格 pragma 处于事件状态以允许使用全局变量时使用,或者当严格关闭时它甚至用于与普通全局变量不同的一些额外功能?

最佳答案

是的,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";

如果你去掉 our声明并在不严格的情况下运行它,这显然不会给出输出
my  gives -1
our gives 42

就像 my , our可以采用一些额外的声明语法,例如属性:
use threads::shared;
our $foo :shared;

您还可以指定使用 fields 的类型。附注:
our Foo $foo;

如果没有 our,全局变量就无法做到这一点。 .

关于perl - 我们在 Perl 中定义的变量和普通全局变量之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17709834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com