• 第六章 子过程:


    <pre name="code" class="html"><pre name="code" class="html">第六章 子过程:
    
    声明一个命名子过程,但不定义它,使用下面的形式:
    sub NAME
    sub NAME PROTO
    sub NAME ATTRS
    sub NAME PROTO ATTRS
    
    声明并且定义一个命名子过程,加上一个 BLOCK:
    sub NAME BLOCK
    sub NAME PROTO BLOCK
    sub NAME ATTRS BLOCK
    sub NAME PROTO ATTRS BLOCK
    
    创建一个匿名子过程或子句,把 NAME 去掉就可以:
    sub BLOCK
    sub PROTO BLOCK
    sub ATTRS BLOCK
    sub PROTO ATTRS BLOCK
    
    
    
    对于没有 NAME 的形式,你还必须提供调用子过程的方法.因此你必须保存返回值,因为 这种形式的 sub 声明方
    法不但在编译的时候编译,同时也产生一个运行时的返回值,所以 我们就可以保证保存它:
    $subref = sub BLOCK;
    
    [root@wx03 big]# cat a1.pl 
    $subref= sub {return "test
    "};  ##返回函数引用
    print $subref;
    print "
    ";
    
    print "2222222222222
    ";
    
    print &$subref;
    
    [root@wx03 big]# perl a1.pl 
    CODE(0x1b53b30)
    2222222222222
    test
    
    
    
    子过程(其他的程序块也一样)的返回值是过程最后一个表达式的值.或者你可以在子过程的 任何一个地方明确使用
    一个 return 语句来返回值并且退出子过程
    
    return 退出子程序
    
    
    
    
    
    [root@wx03 2]# cat a4.pl 
    $subref = sub {print "111
    ";};
    print $subref ;
    print "
    ";
    print &$subref;
    
    [root@wx03 2]# perl a4.pl 
    CODE(0x17d5b30)
    111
    1[root@wx03 2]# 
    
    
    [root@wx03 2]# perl a5.pl 
    Ok, you've been razzled.
    1
    [root@wx03 2]# cat a5.pl 
    sub razzle {
    print "Ok, you've been razzled.
    ";
    }
    $str=razzle();
    print $str;
    print "
    ";
    
    [root@wx03 2]# perl a5.pl 
    Ok, you've been razzled.
    1
    
    
    
    返回值使用return 就没有1这种返回值:
    
    [root@wx03 2]# cat a5.pl 
    sub razzle {
    return "Ok, you've been razzled.
    ";
    }
    $str=razzle();
    print $str;
    print "
    ";
    [root@wx03 2]# perl a5.pl 
    Ok, you've been razzled.
    
    
    所有传入 Perl 过程的参数都是以 @_ 身份传入的
    
    
    一个 return 语句来返回值并且退出子过程
    
    2.2 错误指示
    
    Perl 中实现这个目的最自然的
    一种方法就是用一个不带参数的 return 语句.这样当函数在标量 环境中使用时,调用者得到一个 undef,如果在
    列表环境中使用,调用者得到一个空列表.
    
    3.0 传入引用


    
    
    
       
    
    
  • 相关阅读:
    css3 径向渐变
    进度条-线性渐变
    echars 图表提示框自定义显示
    Android Ndef Message解析
    android 应用程序记录AAR
    android的nfc卡模拟开发
    《NFC开发实战详解》笔记
    1、Altium Designer 入门
    Stm32之通用定时器复习
    external与static的用法
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6200047.html
Copyright © 2020-2023  润新知