- 论坛徽章:
- 0
|
没试过 不知道怎么才能快 等待高手回复...
为什么那么大要存在数组里面
或者可以想到其他方式 比如存在文件里面然后利用模式匹配
- 29.2.93. 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 的值组成的列表。
复制代码 |
|