zoukankan      html  css  js  c++  java
  • 转 Perl函数返回值用法指导

    http://developer.51cto.com/art/201007/213003.htm

    Perl函数返回值用法指导

     

    Perl编程语言中Perl函数返回值用法你是否比较熟悉,这里向大家简单介绍一下,希望本文的介绍能让你有所收获欢迎大家一起来学习有关Perl语言的相关内容。

    本文和大家重点讨论一下Perl函数返回值的概念,在Perl中,return语句可以返回一个标量值或者一个列表,这个标量值可以是一个变量,或者一个表达式的最后求值。

    Perl函数返回值

    在Perl中,return语句可以返回一个标量值或者一个列表,这个标量值可以是一个变量,或者一个表达式的最后求值,如:return1;<===>return(1);return$a+$b;<===>return($a+$b);
    然后,一个Perl函数的返回值,并不止一个,有的时候会有多个值需要返回,这是就要用到列表,这个列表可以包含多个变量值。

    一、单一变量的Perl函数返回值

     

     1 #Functiondefinition.  
     2 subget_value()  
     3 {  
     4 my$var;  
     5 $var=1;  
     6 return($var);  
     7 }  
     8 #########Mainscript  
     9 my$result;  
    10 $result=get_value();  
    11 print"$result=$result
    ";  
    12 #######printresultis:  
    13 $result=1;  

     

    二、多个标量的Perl函数返回值

     

     1 #Functiondefinition.  
     2 subget_value()  
     3 {  
     4 my($var_a,$var_b);  
     5 $var_a=1;  
     6 $var_b=2;  
     7 return($var_a,$var_b);  
     8 }  
     9 #########Mainscript  
    10 my($result_a,$result_b);  
    11 ($result_a,$result_b)=get_value();  
    12 print"$result_a=$result_a
    $result_b=$result_b
    ";  
    13 #######printresultis:  
    14 $result_a=1;  
    15 $result_b=2;  

    三、数组的Perl函数返回值

    有问题的代码:

     1 #Functiondefinition.  
     2 subget_value()  
     3 {  
     4 my(@$var_a,@var_b);  
     5 @var_a=(1,2);  
     6 @var_b=(30,40);  
     7 return(@var_a,@var_b);  
     8 }  
     9 #########Mainscript  
    10 my(@result_a,@result_b);  
    11 (@result_a,@result_b)=get_value();  
    12 print"@result_a=@result_a
    @result_b=@result_b
    ";  
    13 #######printresultis:  
    14 @result_a=1,2,30,40  
    15 @result_b=  

    #!!!在这里,我们原本希望得到的结果应该是:
    @result_a=1,2
    @result_b=30,40
    但实际上却并不是这样,这里一点需要注意的是:Perl中返回值中的列表是被“铺平(flattened)的”,也就是说:
    return(@var_a,@var_b);<====等价===>return($var_a[0],$var_a[1],$var_b[0],$var_b[1]);
    所以这个时候,return将会把returnlist里面的值,和接受returnlist里面的变量一一对应起来,当遇到数组是表示接受所有值。所以,解决这个问题就需要使用引用,如:
     

     1 #Function definition.  
     2 sub get_value()  
     3 {  
     4 my(@$var_a,@var_b);  
     5 @var_a=(1,2);  
     6 @var_b=(30,40);  
     7 return(@var_a,@var_b);  
     8 }  
     9 #########Main script  
    10 my(@result_a,@result_b);  
    11 my($result_a_ref,$result_b_ref);  
    12 ($result_a_ref,$result_b_ref)=get_value();  
    13 #here need to encode the reference  
    14 @result_a=@$result_a_ref;  
    15 @result_b=@$result_b_ref;  
    16 print"@result_a=@result_a
    @result_b=@result_b
    ";  
    17 #######print resultis:  
    18 @result_a=1,2  
    19 @result_b=30,40  

     

    所以对于哈希变量的返回也可以做同样的处理,当有标量,数组,哈希变量一起混合使用的时候也应该做同样的处理。

  • 相关阅读:
    swift 设置图片动画组 iOS11之前 默认图片 设置不成功
    iOS 管理库 Carthage 安装以及使用
    OC 和 swift 冒泡排序
    swift中UITextView的使用
    图片拉伸
    swift
    label文字从左上角开始
    2017最新总结CocoaPods安装细节及遇到的问题
    苹果 重置APPID密保问题及更新开发者协议
    xcode
  • 原文地址:https://www.cnblogs.com/njczy2010/p/5555231.html
Copyright © 2011-2022 走看看