免费注册 查看新帖 |

Chinaunix

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

对称的. . 是什么意思。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-23 10:25 |只看该作者 |倒序浏览
没太明白int(rand(100) + 1)左右两边对称的点号是什么意思?  最后的""也不太明白   (不应该是字符串并置运算符把?)
print "Your lucky number for today is: " . int(rand(100) + 1) . " ";


另外的一个例子:

print “some powers of two are:\n”,
map "\t" . (2**$_) . "\n", 0..15;



也不太明白对称的.  .是什么意思? 另外还有什么\t, \n 的,放在这是什么意思?望解答下!

论坛徽章:
0
2 [报告]
发表于 2009-06-23 10:30 |只看该作者
点号是一个operator

再看看map的用法
map

  map BLOCK LIST
  map EXPR, LIST

这个函数为 LIST 里的每一个元素计算 BLOCK 或者 EXPR(在本地把 $_ 设置为每个元素)并且返回由每次计算的结果组成的列表。它在列表环境里计算 BLOCK 或者 EXPR,因此 LIST 里的每个元素都可以映射成零个,一个,或者更多个返回值里的元素。这些东西都填充到一个列表中去了。比如:

  @words = map { split ' ' } @lines;

把一个行组成的列表分裂成一个单词列表。但是通常在输入值和输出值之间是一一映射的:

  @chars = map chr, @nums;

把一个数字列表转换成对应的字符。而下面是一个一对二映射的例子:

  %hash = map { genkey($_) => $_ } @array;

它只是下面程序的一种有趣的写法:

  %hash = ();
  foreach $_ (@array) {
     $hash{genkey($_) } = $_;
  }

因为 $_ 是一个到该列表数值的别名(隐含引用),所以这个变量可以用于修改数组的元素。这样做是允许并且是有用的,不过,如果 LIST 不是一个命名数组,那么它可能导致非常奇怪的后果。这种情况下使用一个普通的 foreach 循环可能更清晰一些。又见 grep;map 和 grep 的不同在于:map 返回一个由所有成功计算 EXPR 后得到的结果组成的列表,而 grep 返回一个由所有对 EXPR 计算为真的 LIST 的值组成的列

论坛徽章:
0
3 [报告]
发表于 2009-06-23 10:31 |只看该作者
就是字符串联接运算符吧

[ 本帖最后由 xuxingyu 于 2009-6-23 10:33 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-06-23 10:52 |只看该作者
.是perl的运算操作符,是字符串连接操作,比如"abc"."xy"的值就是"abcxy"
\t \n是控制符,\t是制表符tab,\n是换行
map还没学到

论坛徽章:
0
5 [报告]
发表于 2009-06-23 11:15 |只看该作者
字符串连接阿。。。。

论坛徽章:
0
6 [报告]
发表于 2009-06-23 15:54 |只看该作者
把一个数字列表转换成对应的字符。而下面是一个一对二映射的例子:

  %hash = map { genkey($_) => $_ } @array;

它只是下面程序的一种有趣的写法:

  %hash = ();
  foreach $_ (@array) {
     $hash{genkey($_) } = $_;
  }


没体会到你的一对二映射是什么意思? 提示我的错误:
Undefined subroutine &main::genkey called at Untitled line 8

能不能把这个例子整理完整点,我想理解下!  一直摸透map和grep细微的区别!

论坛徽章:
0
7 [报告]
发表于 2009-06-23 16:11 |只看该作者

回复 #6 drosophilia 的帖子

请perldoc -f map、perldoc -f grep或参考小骆驼中对这两个函数的应用

论坛徽章:
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
8 [报告]
发表于 2009-06-23 16:11 |只看该作者
原帖由 drosophilia 于 2009-6-23 15:54 发表


没体会到你的一对二映射是什么意思?

那估计是翻译的人自己自作主张添加上去的,这个例子来自 map 的手册。

  一直摸透map和grep细微的区别!

仔细看看 map 和 grep 的手册就是了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP