• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

转Perl函数返回值用法指导

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

 

 

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\n";  
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\n\$result_b=$result_b\n";  
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\n\@result_b=@result_b\n";  
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\n\@result_b=@result_b\n";  
17 #######print resultis:  
18 @result_a=1,2  
19 @result_b=30,40  

 

 

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap