推荐答案
测试一下
题目
5子程序中的私有变量
参考答案与知识点
参考答案
答案是,能。
默认情况下 ,Perl中所有变量都是全局的 ;也就是说 ,这些变量可以在程序的任意部分使用 。你也可以任意时候使用 my
创建私有变量 :
sub max {
my($m,$n); # 新的,私有变量
($m,$n) = @_; # 赋值
if($m > $n) {$m} else{$n}
}
这些变量是此代码块中的私有的 (或者局部的 )变量;别的 $m和$n不会影响此处的两个变量 。而且,其它地方的代码不
能访问或者修改这些变量 ◆。你可以将此子程序放在任意地方而不用担心它们会和程序其它地方的 $m,$n(如果有)变量
混淆◆。在if代码块内部,其语句没有分号 。Perl允许省略括号中最后一条语句的分号 ,在实际代码中 ,通常仅当此代码
块仅包含一条语句时才省略此分号 。
◆高级的程序员知道在程序外部可以通过引用而非变量 名字来访问私有变量 。
◆当然,如果此程序 中还有一个叫做 $max的子程序,那将引起混淆 。
前一例中的子程序可以变得更简单 。你注意到列表 ($m,$n )书写了 2次吗?my操作符可以用在有括号 的变量的列表中 ,因
此,通常将上述两个语句如下书写 :
my($m,$n) = @_;
上面的一条语句创建了一些私有变量并 给它们赋值 ,第一个为 $m,第二个为 $n。几乎每一个子程序都由类似的语句开头 。
当看见那一行时 ,你就知道此子程序需要 2个变量,在此子程序中非别被叫做 $m和$n。
涉及知识点
- Perl 子程序 @_ 的私有性
- my 声明词法变量
- local 动态作用域
- 私有的含义:每次调用独立