大佬教程收集整理的这篇文章主要介绍了perl – 本地和语句修饰符(例如postfix if),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
perlsyn
,“Statement-Modifiers” section明确指出
不幸的是,这个列表缺少本地,its own documentation也没有涵盖其行为.我认为它也是未定义的,文档在这些特定部分中只是不完整.
这实际上是在文档中涵盖的吗?
my $x = 1 if $flag; # UNDEFINED behavior
是因为my $x声明在编译时发生,而= 1赋值在运行时发生,测试也是如此.因此,整个语句被打破了(它根本不应该分配?),并且这行代码的行为被认为是未定义的.
然而,当地是非常不同的.从perlsub(我的重点)
因此,当地人做的事与我或我们完全不同;它为块的其余部分保存其目标(全局)变量的值,并在从块退出时恢复它.
此外,自local
is a run-time operator以来,没有编译与运行时的声明分配问题,如我的$x = 1,因此可以使用后缀条件.考虑
use warnings; use strict; use feature 'say'; my $flag = shift or 1; our $var = 1; { local $var if $flag; $var = 2; say $var; } say $var;
当使用$flag set(script.pl)运行时,本地化发生,最后一个打印显示我们的$var已被保留.使用flag unset(script.pl 0)时,不会发生这种情况,不会为块保存全局值,并最终覆盖.
如果$flag,则使用local $var = 2;本地化和分配都没有发生.
如果只有本地语句本身必须以后缀方式完成,因为本地的效果仅在封闭范围内持续(因此,如果($f){local $var}对其余代码没有任何作用).
这样做可以根据单个条件的单纯值从根本上改变代码行为,并且可能在高级别改变代码行为;我建议仔细使用这些代码.这个简短的程序特别只显示了如何使用后缀条件.感谢ysth和ikegami的评论.
以上是大佬教程为你收集整理的perl – 本地和语句修饰符(例如postfix if)全部内容,希望文章能够帮你解决perl – 本地和语句修饰符(例如postfix if)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。