Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – “标准”和块包声明之间有什么区别吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,一个包开始简单地
package Cat;
... #content
!0;

我刚刚发现,从perl 5.14开始,还有“block”语法。

package Cat {
    ... #content
}

这可能是一样的但是要确定,有什么区别吗?

关于1;在包文件的末尾。任何块的返回值作为最后一个求值表达式的值。@R_298_9447@把1结束之前}?要求快乐,有什么区别:

package Cat {
    ... #content
    1; 
}

package Cat {
    ... #content 
}
1;

解决方法

当然有区别。第二个变体有一个块。

包声明为subs和全局变量设置当前命名空间。这是正常范围,即范围以文件或eval字符串的结尾或封闭的块结束。

NAME BLOCK语法包就是语法糖

{ package NAME;
  ...;
}

甚至编译成相同的操作码。

然包声明在语法上是一个语句,但这不是语义上的;它只是设置编译时属性。因此,最后一个块的最后一个语句是文件的最后一个语句,并没有区别

package Foo;
1;

package Foo {
  1;
}

WRT。最后一句话。

包BLOCK语法很有趣,主要是因为它看起来像其他语言的类Foo {},我想。由于块限制范围,这也使得使用正确的范围变量更容易。认为:

package Foo;
our $x = 1;
package main;
$::x = 42;
say $x;

输出:1,因为我们是像我的词法范围,只是宣布一个别名!这可以通过块语法来防止:

package Foo {
  our $x = 1;
}
package main {
  $::x = 42;
  say $x;
}

按预期工作(42),然严格不快乐。

大佬总结

以上是大佬教程为你收集整理的perl – “标准”和块包声明之间有什么区别吗?全部内容,希望文章能够帮你解决perl – “标准”和块包声明之间有什么区别吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。