免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: zhuyubei
打印 上一主题 下一主题

pppk之Recipe1.2(2) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-08-20 21:27 |只看该作者
2. 对于出现多个||的联用,也只有第一个||左边的那个操作数是标量环境。当然实质后面多个||,根本就没用到.

我觉得这句话也有问题,try~
  1. @aDefaultList = () || (36,35) || @aSeconds;
复制代码
||左侧就是列表环境吧?说真的,以前从来不知道||左侧是列表环境,非常感谢分享!

论坛徽章:
0
12 [报告]
发表于 2012-08-20 21:33 |只看该作者
回复 11# kk861123


    我的意思是说当中的 (36,35),即使它是第二个||的左数,但由于它在第一个||的时候已经成为右数返回了,所以不是作为第二个||的标量环境来用的。

论坛徽章:
0
13 [报告]
发表于 2012-08-20 21:34 |只看该作者
对于数组来说,尽量用三元表达式来赋默认值吧!

论坛徽章:
0
14 [报告]
发表于 2012-08-20 21:49 |只看该作者
本帖最后由 zhuyubei 于 2012-08-20 21:49 编辑

回复 11# kk861123


    我知道了!原来是第一个||里的标量环境返回的是元素个数,但是第二个||这里仍然判断了,返回的仍旧是其左值的标量环境,但是是数组的最后一个元素。神啊!

论坛徽章:
0
15 [报告]
发表于 2012-08-20 21:50 |只看该作者
那什么时候,返回元素个数,什么时候返回最后一个元素啊。求高手解释

论坛徽章:
0
16 [报告]
发表于 2012-08-20 21:56 |只看该作者
回复 13# zhuyubei


||左侧为列表环境,这个没错。原因在于左边的值,注意数组和列表操作符是不一样:
  1. my @aNums = ( 'a','b','c' );
  2. my $aList;
  3. $aList = @aNums;
  4. print $aList,"\n";
  5. $aList = ( 'a','b','c' );
  6. print $aList,"\n";

  7. exit;
复制代码

论坛徽章:
0
17 [报告]
发表于 2012-08-20 22:06 |只看该作者
回复 16# kk861123


    太感谢了。这是我的盲区。我好好消化下

论坛徽章:
0
18 [报告]
发表于 2012-08-20 22:07 |只看该作者
不好意思,还有个问题要反馈一下
3. 如果用or, 则左操作数不会被用在标量环境下, ()在or下,居然被认作是true! 小心!


你把
  1. 06.@aDefaultList = () or @aSeconds;
复制代码
改为
  1. 06.@aDefaultList = ( () or @aSeconds );
复制代码
因为or的优先级比较低的原因。

论坛徽章:
0
19 [报告]
发表于 2012-08-20 22:12 |只看该作者
回复 18# kk861123


    好的。谢谢反馈。你Perl水平真不错!

论坛徽章:
0
20 [报告]
发表于 2012-08-20 22:17 |只看该作者
回复 19# zhuyubei


    没有啦,要学的还很多,perl细节太多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP