在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4414|回复: 6

[求助] perl 中 sub函数里面怎么用return?

[复制链接]
发表于 2013-7-4 09:07:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
小女子这厢有礼了。请问各位大牛,在perl 中,
定义一个sub函数,在最后想要返回某个变量$file的值,在函数最后可以用return $file 吗?
return 可以返回数组吗? 比如:return @file??
具体怎么用return呢?
发表于 2013-7-4 11:36:07 | 显示全部楼层
回复 1# E2TML


    可以返回数组:

# Function definition.
sub get_value()
{
my(@$var_a,@var_b);
@var_a=(1,2);
@var_b=(30,40);
return(\@var_a,\@var_b);
} ######### Main script
my(@result_a,@result_b);
my($result_a_ref,$result_b_ref);
($result_a_ref,$result_b_ref)=get_value(); # here need to encode the reference
@result_a=@$result_a_ref; @result_b=@$result_b_ref;
print"\@result_a=@result_a\n\@result_b=@result_b\n"; ####### print result is:
@result_a=1,2
@result_b=30,40
发表于 2013-7-4 12:21:14 | 显示全部楼层
标量可以吧,数组的话应该用它的引用。。
 楼主| 发表于 2013-7-5 09:22:56 | 显示全部楼层




   谢谢您的回答,请问:return(\@var_a,\@var_b); 这句中,为什么要用 \ ? return @var_a,@var_b ; 这样写可以吗?


($result_a_ref,$result_b_ref)=get_value(); # here need to encode the reference 这句中 $result_a_ref,$result_b_ref的值分别是什么呢? 为什么return的数组要赋给变量?
@result_a=@$result_a_ref; @result_b=@$result_b_ref; 这句中的@$两个符号可以连一起用? 具体是什么意思呢?
不好意思,我是初学,问题比较多,还望赐教!谢谢。
 楼主| 发表于 2013-7-5 09:23:43 | 显示全部楼层
回复 3# jnale


请问,数组的引用是什么意思呢?
发表于 2013-7-5 10:57:50 | 显示全部楼层
回复 4# E2TML


    \@var_a 是引用,指向@var_a的地址,类似于C语言的“指针”
    如果只返回1个数组,可以直接返回@var_a而不必返回引用
    当返回2个数组时,不使用“\@var_a”的话,二数组边界不明。

$result_a_ref=\@var_a   把@var_a的指针存入变量$result_a_ref
存入之后,@$result_a_ref  就等价于 @var_a
 楼主| 发表于 2013-7-5 19:34:19 | 显示全部楼层
回复 6# sjtusonic


   好的,这一块清楚了,谢谢您!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 20:27 , Processed in 0.018907 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表