永发信息网

Perl函数参数的传递 和 函数参数中多个数组怎么传递

答案:1  悬赏:0  手机版
解决时间 2021-02-09 03:51
Perl函数参数的传递 和 函数参数中多个数组怎么传递
最佳答案
首先来个基本函数参数的传递
sub hello {  print "Hello @_" }
hello ("World!", "I am Robot" ) ; # 打印出 Hello World! I am Robot这里值得留意的就是 @_ 就是装载所有传入的参数的数组 ( 看好了, 这其实是数组啊!! )
所以, 将上面的改一下, 就可以:
sub hello {  print "Hello $_[0]" }
hello ("World!", "I am Robot" ) ; # 打印出 Hello World!这次, 我不打印 @_, 而只取第一个元素, 所以会写成 $_[0].

又因为传入时都是数组的关系, 所以 :
sub printArray {
  my @x = $_[0];
  my @y = $_[1];
  print "X: @x$/";
  print "Y: @y$/";
}
@x = ( 1..5 );
@y = ( 'a'..'f') ;
printArray ( @x, @y ) ; # 输出竟然是 1 2!!这样是行不通的, 因为对 @_ 来说, 传入的参数其实只是 ( 1..5, 'a'..'f' ), 它们都堆在一起了
要做到可以区分出来数组做参数, 我们要用"引用"了!
sub printArray {
  my @x = @{$_[0]}; # 这个叫 de-reference, 反引用
  my @y = @{$_[1]};
  print "X: @x$/";
  print "Y: @y$/";
}
@x = ( 1..5 );
@y = ( 'a'..'f') ;
printArray ( @x, @y ) ; # 这个叫 reference, 将数组变成引用传入
# 这次的输出是
# X: 1 2 3 4 5
# Y: a b c d e f所谓引用, 其实就相当於 c 的 pointer (姑且这麼理解吧!) 实际上传入的就是一个记忆体地址而已, 当反引用时, perl 就会知道这是一个数组, 於是就可以赋值回等号左边的 @x 和 @y 了

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机黑屏打不开指示灯绿色常亮,非得取下电地
思思亚健康调理养生美容中心地址好找么,我有
生态农庄地址在什么地方,想过去办事
若m,n互为倒数,则mn的二次方+(2-n)=
学习游泳的最好的方法是什么
重庆的小板凳吧式火锅橄榄城店怎么去啊,有知
妻子买的车,不同意丈夫开,丈夫私自开属于违法
含有红胡子、雅汉等角色的动画片叫什么名字
化学,括号3怎么解?
鑫金涛国际锗石美容养生会馆地址有知道的么?
大喜之家我想知道这个在什么地方
你好,我想问一下如果国家修路占用个人土地需
我是吉林松原的,去哪买汽车维修工具比较好
外地女方带子嫁上海孩子能不能上户口
太和美容地址好找么,我有些事要过去
推荐资讯
从嘉祥到云南坐飞机路线价格是多少
在教师的聘用上,目前我国实行的是__________
中国银行24小时自助银行(鹤岗分行)怎么去啊,
车子未买保险上路后果
旺角购物中心地址有知道的么?有点事想过去
吉首农村商业银行排吼支行怎么去啊,有知道地
金星双语幼儿园(保定曲阳)怎么去啊,我要去那
农业银行(丁青觉恩营业所)地址有知道的么?有
请问WE United和PES United两支球队?
有一部电影是说两个男的去寻宝,然后吃了什么
一个长方形菜地相邻两边长是30米和50米,同这
酷划任务多了手机内存不足怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?