据我所知,my
运算符将声明在词法范围内的变量,并且使用local
运算符声明变量来进行动态作用域。
有人可以简短地描述一下吗?
最佳答案
local($ x)节省了全局变量$ x的旧值,并且
为子例程的持续时间分配一个新值,即
在该子例程调用的其他函数中可见。这个做完了
在运行时,即所谓的动态作用域。 local()总是会影响
全局变量,也称为包变量或动态变量。
my($ x)创建一个仅在当前变量中可见的新变量
子程序。这是在编译时完成的,因此称为词汇或
静态作用域。 my()始终会影响私有变量,也称为
词汇变量或(不合适的)静态(作用域)变量。
看一下Perl-FAQ's:
关于perl - Perl中的词法作用域和动态作用域之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8473760/