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;        #强制要求使用一些严格的,良好的编程风格。

  • 相关阅读:
    September 17th 2016 Week 38th Saturday
    【2016-09-16】UbuntuServer14.04或更高版本安装问题记录
    September 16th 2016 Week 38th Friday
    September 11th 2016 Week 38th Sunday
    September 12th 2016 Week 38th Monday
    September 10th 2016 Week 37th Saturday
    September 9th 2016 Week 37th Friday
    c++暂停
    八皇后问题
    ( 转转)Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
  • 原文地址:https://www.cnblogs.com/-9-8/p/4485835.html
Copyright © 2011-2022 走看看