免费注册 查看新帖 |

Chinaunix

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

请教 赋值语句的值 问题 [复制链接]

论坛徽章:
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
11 [报告]
发表于 2009-07-27 15:22 |只看该作者
原帖由 linuxty 于 2009-7-27 15:15 发表


$n=( ($key,$value)=() )  这一种是把 () 赋值给 $n , 赋值语句的值为()

这种说法是不正确的,其实是把 () 中元素的个数,也即 0 赋给 $n.

论坛徽章:
0
12 [报告]
发表于 2009-07-27 16:32 |只看该作者
原帖由 MMMIX 于 2009-7-27 15:20 发表

依赖于 context


在 perldata 中搜索 List assignment,讲的很详细。



List assignment in scalar context returns the number of elements produced by the expression on the right side of the assignment
谢谢老大 找到了第一种情况的解释  很详细

论坛徽章:
0
13 [报告]
发表于 2009-07-27 20:55 |只看该作者

回复 #9 MMMIX 的帖子

请问perldata是什么啊?我是小菜

论坛徽章:
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
14 [报告]
发表于 2009-07-27 22:17 |只看该作者
原帖由 maklive8 于 2009-7-27 20:55 发表
请问perldata是什么啊?我是小菜

Perl 的自带文档之一,可通过 perldoc perldata 查看。

论坛徽章:
0
15 [报告]
发表于 2009-07-28 11:32 |只看该作者

回复 #14 MMMIX 的帖子

谢谢o(∩_∩)o...

论坛徽章:
0
16 [报告]
发表于 2009-07-28 14:00 |只看该作者
原帖由 linuxty 于 2009-7-27 14:09 发表

谢谢 !

请问老大下面程序又应该怎么解释也 输出为 2
perl -e'@a=($x,$y)=();print scalar @a'  

如果按照上面说的应该为0 啊   ?

越来越晕了...  老大不要笑我  ..


@a=($x,$y)=();这个赋值语句的值是最右边的值0,但是单独的@a的值是2,你输出的是@a,而不是这个赋值语句,所以结果为2是正常的

论坛徽章:
0
17 [报告]
发表于 2009-07-28 14:11 |只看该作者
原帖由 ringz 于 2009-7-28 14:00 发表


@a=($x,$y)=();这个赋值语句的值是最右边的值0,但是单独的@a的值是2,你输出的是@a,而不是这个赋值语句,所以结果为2是正常的

@a=($x,$y)=();这个赋值语句的值不是0喔 ?

论坛徽章:
0
18 [报告]
发表于 2009-07-28 14:29 |只看该作者
我的理解是:
($a,$b)=($c,$d)  这种形式的列表赋值语句.
在标量环境下,赋值语句的值为右边列表的元素个数.
在列表环境下,赋值语句的值应该是左边的列表.

我运行了如下代码.
perl -e'print "ok" if  @a=($x,$y)=() '  
打印了ok
因为 ($x,$y)=()前面有@a , 所以处于列表环境下 , 赋值语句的值为(undef,undef) 然后再赋值给 @a

不知道是否正确,请老大们指点!


.

[ 本帖最后由 linuxty 于 2009-7-28 14:49 编辑 ]

论坛徽章:
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
19 [报告]
发表于 2009-07-28 14:52 |只看该作者
原帖由 linuxty 于 2009-7-28 14:29 发表
我的理解是:
($a,$b)=($c,$d)  这种形式的列表赋值语句.
在标量环境下,赋值语句的值为右边列表的元素个数.
在列表环境下,赋值语句的值应该是左边的列表.

没错。

论坛徽章:
0
20 [报告]
发表于 2009-07-28 14:55 |只看该作者
原帖由 MMMIX 于 2009-7-28 14:52 发表

没错。


^_^ 谢谢老大 终于搞懂了  !
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP