免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2967 | 回复: 10

这种List赋值行为以前还真没注意到 [复制链接]

论坛徽章:
0
发表于 2011-03-08 15:56 |显示全部楼层
$foo和$bar的值一样吗?
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;

  4. my $foo = (1, 2, 3);
  5. print "$foo\n";

  6. my $foo_1;
  7. my $foo_2;

  8. my $bar = (($foo_1, $foo_2) = (3, 2, 1));
  9. print "$bar\n";
复制代码

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
发表于 2011-03-08 16:10 |显示全部楼层
我以为$bar会是2

论坛徽章:
0
发表于 2011-03-08 16:13 |显示全部楼层
我直到刚才为止也以为是2

论坛徽章:
0
发表于 2011-03-08 16:14 |显示全部楼层
上面那个是逗号表达式,下面这个是赋值吧??

这种写法太纠结了

论坛徽章:
0
发表于 2011-03-08 16:21 |显示全部楼层
更纠结的是,这是perldata中的写法。原话是这么说的:

List assignment in scalar context returns the number of elements produced by the expression on the right side of the assignment:

$x = (($foo,$bar) = (3,2,1));       # set $x to 3, not 2
  $x = (($foo,$bar) = f());           # set $x to f()'s return count

论坛徽章:
2
技术图书徽章
日期:2013-10-30 14:37:252015年亚洲杯之伊朗
日期:2015-04-30 13:37:02
发表于 2011-03-08 23:03 |显示全部楼层
一样吧。PERL PROGRAM 里有类似的例子。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2011-03-08 23:24 |显示全部楼层
很好,i+++++i 的问题在本版也出现了嘛。

为嘛你们就不能把程序写的像程序呢。

论坛徽章:
0
发表于 2011-03-09 17:51 |显示全部楼层
flw哥~~~这是perldoc里这么写的,我已经在5楼把原文给引用出来了~~不是自己没事想着玩的

论坛徽章:
0
发表于 2011-03-09 22:05 |显示全部楼层
本帖最后由 黑色阳光_cu 于 2011-03-09 22:09 编辑

左边列表的大小我们预先是知道的,有可能不知道大小的是右边,所以,返回右边的列表大小更有用

论坛徽章:
0
发表于 2011-03-10 13:43 |显示全部楼层
........... 为嘛 $bar 不是 2 ????
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP