免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2923 | 回复: 11
打印 上一主题 下一主题

为什么输出6 3 2 3 求解答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-24 23:05 |只看该作者 |倒序浏览
本帖最后由 317550564 于 2012-04-24 23:06 编辑

sub foo {
qw/ 2 4 6 /
}
sub bar {
@a = qw/ 2 4 6 /
}
my ($f1, $f2, $b1, $b2);
$f1 = foo();
($f2) = foo();
$b1 = bar();
($b2) = bar();
  print "$f1 $f2 $b1 $b2";

输出6 2 3 2     

论坛徽章:
0
2 [报告]
发表于 2012-04-25 00:07 |只看该作者
本帖最后由 sjdy521 于 2012-04-25 00:07 编辑

你先把你认为正确的说出来。。把你认为错误的也说出来。
说出你的想法,不是直接问为什么。不然大家搞不清楚你到底哪里不明白了

论坛徽章:
0
3 [报告]
发表于 2012-04-25 01:11 |只看该作者
回复 2# sjdy521


    $f1 = foo();
这里我觉得应该是返回列表长度3。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2012-04-25 09:08 |只看该作者
回复 1# 317550564


    See 'Scalar values' and 'List value constructors' in perldata

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
5 [报告]
发表于 2012-04-25 10:09 |只看该作者
这道题也不错

论坛徽章:
0
6 [报告]
发表于 2012-04-25 12:46 |只看该作者
学习!
See 'Scalar values' and 'List value constructors' in perldata

论坛徽章:
0
7 [报告]
发表于 2012-04-25 17:02 |只看该作者
数组,列表的区别!

论坛徽章:
0
8 [报告]
发表于 2012-04-25 17:33 |只看该作者

本帖最后由 317550564 于 2012-04-24 23:06 编辑


sub foo {
qw/ 2 4 6 /
}
sub bar {
@a = qw/ 2 4 6 /
}
my ($f1, $f2, $b1, $b2);
$f1 = foo();
($f2) = foo();
$b1 = bar();
($b2) = bar();
  print "$f1 $f2 $b1 $b2";

$f1是一个标量,那么函数foo()就会返回一个标量值,默认情况下,最后一个值就是返回值,就是6喽
($f2)是一个列表,但是只能存进去一个元素,只能存第一个喽,就是2喽
由于bar中最后一个元素是一个列表。而如果用标量来存储,就是列表的长度,就是3喽
($b2)是列表,只能存进一个元素

论坛徽章:
0
9 [报告]
发表于 2012-04-25 19:41 |只看该作者
8楼分析的精辟,正解。

论坛徽章:
0
10 [报告]
发表于 2012-04-25 23:52 |只看该作者
回复 4# MMMIX


    List value constructors
       List values are denoted by separating individual values by commas (and enclosing the list in parentheses where
       precedence requires it):

           (LIST)

       In a context not requiring a list value, the value of what appears to be a list literal is simply the value of the
       final element, as with the C comma operator.  For example,


           @foo = ('cc', '-E', $bar);

       assigns the entire list value to array @foo, but

           $foo = ('cc', '-E', $bar);

       assigns the value of variable $bar to the scalar variable $foo.  Note that the value of an actual array in scalar
       context is the length of the array; the following assigns the value 3 to $foo:

           @foo = ('cc', '-E', $bar);
           $foo = @foo;                # $foo gets 3
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP