zoukankan      html  css  js  c++  java
  • Perl的子程序(二)

    在Perl中可以自己创建子程序(Subroutine):

    关键字sub,子程序名以及用花括号封闭起来的代码块。

                    sub  marine { ... }

    子程序名与标量的命名空间是不同的两个部分。

    子程序的返回值:最后一次运算的表达式即是默认的返回值。也可以用return来显式的返回,这样之后的语句不会执行。

                           在标量上下文返回的会是标量,在列表上下文返回的也是列表。

    子程序中的参数:子程序内部可以使用@_,$_[0],$_[1],$_[2],,,这样的变量来表示。@_变量是子程序私有变量,递归调用时,不会出错。

                           在子程序调用时,在子程序名后用括号括住的列表表达式。

                           $n = &max(10,15);          #10后被送到$_[0],15被送到$_[1],@_=(10,15),在标量上下文值为2;

    子程序私有变量定义: my关键字来声明词法变量(lexical variable)。           my($m,$n) = @_;  #创建私有变量并赋值。

                                  不仅可以定义在子程序中,还可以定义在if, while, foreach中。

                                   只能用来声明单个标量/变量,列表/数组。          my $fred, $barney;    #错误,第二个变量无法声明。

    持久性私有变量: 用关键字state来声明,在子程序的多次调用中保留变量之前的值。作用域仍然是只存在于子程序内部。

                            sub  marine  {state $n=0; $n+=1; print; }

                            也可以用来声明数组和哈希类型。   state @number。

    子程序的调用:子程序可以通过 (&+子程序名)的方式来调用。

                        如果编译器之前看到过子程序的定义,那么可以不加&,而直接调用子程序。

                        如果Perl可以通过语法规则直接判断它只能是子程序调用,那么也可以省略 &。

                                也就是说只要你将参数列表放进括号内,就一定是子程序调用。

    use strict;        #强制要求使用一些严格的,良好的编程风格。

  • 相关阅读:
    Codeforces题目 java程序员
    5个能够有效帮助你快速创建超棒CSS3动画效果的类库 java程序员
    POJ3140:Contestants Division(DFS,树形DP) java程序员
    github的学习使用以及将自己开发的app传上去。
    考研还是就业
    五月道别
    写给一个陌生的朋友
    有办法忘了一个人吗?
    困惑啊,我倒底错在哪里?
    招聘广告文字撰写者时注意11项
  • 原文地址:https://www.cnblogs.com/-9-8/p/4485835.html
Copyright © 2011-2022 走看看