zoukankan      html  css  js  c++  java
  • 理解my和local之间的差异

    1.全局变量

    在Perl里面,所有的变量,子程序和其他可以被命名的实体默认都有包作用域(或称为全局作用域). 也就是说,他们存在于当前包的符号表中。

    花括号,子程序或是文件,是不会创建local变量的。

    当然,Perl 确实支持本地变量,提供2种,一个是my,一个是local

    2.my 变量词法作用域(编译时)

    Perl 的my操作符用于创建词法作用域变量。 通过my创建的变量,存活于声明开始的地方,直到闭合作用域结尾。

    my变量并不存在于符号表中。

    我们总能通过限定名称访问包变量值。限定名称(包含::符号)总是指向符号表中的变量。

    3.local的运行时作用域

    local 是运行时作用域机制。它会将参数的值保存在一个运行时栈中,当运行线程离开作用域时,原先作用域外暂存的变量会被恢复。

    my创建了 不同的变量,而local只是将已存在的变量值暂时保存起来罢了。

    4.何时该用my

    通常情况下,我们应该用my而不是local。理由之一是my比local快。 而且my 也比较容易理解。

    另一个原因是创建的词法变量是Perl闭包的实现基础。

    5.何时该用local

    用local的理由之一是,很多perl4风格的代码还在使用。

    另外大部分$开头的变量,或者其他Perl特别对待的变量,只能用local来进行本地化,而用my试图对特殊变量进行本地化是错误的。

    6.local 和my 对列表操作

    local 和my的语法相同,无论是单个变量,还是数组或者散列,都可以用这两种类型声明。

  • 相关阅读:
    生成证书命令keytool
    ACWEB使用HTTPS登录
    https登陆
    java调用webservice接口方法
    项目调研的误区和关键点
    成功的多项目管理
    如何向卖场贩卖多重价值
    零售业如何在淡季做出销量?
    如何进行项目调研
    项目经理的职业化优势
  • 原文地址:https://www.cnblogs.com/tjxwg/p/3011658.html
Copyright © 2011-2022 走看看