美文网首页
Perl用 my声明的词法变量

Perl用 my声明的词法变量

作者: PETJO | 来源:发表于2021-07-01 07:05 被阅读0次

5. 用 my声明的词法变量

  • 词法变量可用在任何语句块内,并不仅限于子程序的语句块。
  • 变量对其所属语句块来说是私有的,如果变量的定义并未出现在任何语句块里,则该变量对于整个程序源文件来说是私有的。
  • 词法变量的作用域(scope)受限于定义它的最内层语句块内,或文件内。
  • 一个程序文件也是一个独立的作用域,所以其中的词法变量到了其他文件是无法访问的。
  • my 操作符并不会更改变量赋值时的上下文。
  • my 操作符不加括号时,只能用来声明靠近的单个词法变量,也可以使用my创建新的私有数组。
  • 所有新变量的值一开始都是空的;标量被设为undef,数组被设为空列表。
  • 日常编程中最好每个新变量都使用my声明,让它保持在自己所在的词法作用域内。
  • perl 的内置变量(比如$_)则完全不用事先声明。
# 任何语句块内都可以使用my 词法变量
foreach (1..10) {
    my ($square) = $_ * $_;    # 在此循环内的私有变量
    print "$_ squared is $squared. \n";
}

# 不更改上下文
my($num) = @_;    # 列表上下文,和($num) = @_;相同
my $num = @_;    # 标量上下文,和$num = @_;相同

# 不加括号只能用来声明靠近的单个词法变量
my $fred $barney;    # 没有声明 $barney
my ($fred $barney);    # 两个都声明了

# my 创建新的私有数组;
my @phone_number;

# 循环内控制变量也可以声明为词法变量
foreach my $rock (qw/ bedrock slate lava /) {
    print "One rock is $rock.\n"
}

相关文章

  • Perl用 my声明的词法变量

    5. 用 my声明的词法变量 词法变量可用在任何语句块内,并不仅限于子程序的语句块。 变量对其所属语句块来说是私有...

  • Perl 子程序中的私有变量

    3. 子程序中的私有变量 Perl 随时可以借助 my 操作符来创建私有变量,称之为词法变量(lexical va...

  • 关于 变量声明和词法声明及var xxx=yyy=100的含义

    在JS中变量声明为var声明词法声明为let const声明变量声明编译器会分配默认值undefined词法声明则...

  • 浅析关于 JS 作用域的几个高频知识点

    闭包 词法作用域 变量提升 变量提升 什么是变量提升 顾名思义,变量提升指的是,在声明变量的时候,变量的声明位置会...

  • Go语法糖——短变量声明(:=)使用注意事项

    :=表示声明+赋值 短变量声明不需要声明所有在左边的变量。如果一些变量在同一个词法块中声明,那么对于这些变量,短声...

  • 你不懂的js上卷(一)

    基本概念 js引擎 编译器 作用域变量赋值操作 词法作用域(定义词法阶段的作用域) 1.由变量或者函数声明时的...

  • 变量提升

    js 代码执行过程分为两个阶段 词法分析:词法分析主要包括:分析变量声明、分析函数声明、分析形参三个部分。执行阶段...

  • var let const

    通过 var 声明的变量和 let 或 const 声明的变量,在创建相应作用域的词法环境阶段,都会注册标识符,但...

  • 词法作用域

    作用域工作模式:1 词法作用域;2 动态作用域(Bash脚本、Perl中的一些模式) 2.1 词法阶段 词法作用域...

  • 常量、变量和基本数据类型

    声明常量和变量 常量和变量在使用前声明,用 let 来声明常量,用 var 来声明变量。let只能声明一个成员变量...

网友评论

      本文标题:Perl用 my声明的词法变量

      本文链接:https://www.haomeiwen.com/subject/xuzdultx.html