2009年1月16日星期五

[PerlChina] Re: perl标量与列表和散列的一点疑问

perl 的这些 $, @, % 等代表不同的类型,你所说的是有意这么设计的,请参考这段:

@array = (1..6);
print "@array[0,2,3]";

一般当你只取数组中一个元素的时候 $array[下标] 就好了,而且前面的 $ 说明取出来的东西是个标量;
而 perl 支持 @array[index1,index2..indexN] 这种写法是为了方便你通过多个下标一起取出多个元素,而 @ 正代表着取出的是一组元素或说一个列表(当然也可以只给它一个下标来取某一个元素,列表的元素个数也可以为一个嘛)

%hash = ( a=>1, b=>2);
print "@hash{'a', 'b'}";

而 %hash, 是唯一键值对的关系,一个键对应一个标量值,通过键得到的是标量值,而 %hash{'key'} 是啥?哈希的值是哈希?所以使用 $hash{'key'} 这种方式就是为了告诉你,通过某个key得到的是哈希里面对应的标量值。
当然,你也可以通过指定多个 key 来取多个值, 所以,这里你知道为啥通过多个 key 来取多个值用的是 @hash{'key1', 'key2' .. 'keyN'} 了吧?





2009/1/16 e280s <e280s4ever@gmail.com>
首先声明:这只是我的一点认识,不是来招口水的,也不涉及到perl的优劣。

1. 我建立一个列表:
@list = qw/aaa bbb ccc ddd/;

我想使用@list中的aaa,于是我可以使用:
@list[0]或$list[0]

2. 我建立一个散列:
%hash = (
   'aaa' => 'aaaa',
   'bbb' => 'bbbb',
   'ccc' => 'cccc'
);
我想使用aaaa,于是:
$hash{'aaa'}即可。但是%hash{'aaa'}就是一个错误的用法。

疑问:是不是设计的时候设计使用@list[下标]的方式是多余的啊,而对散列没有这样一个类似的用法。

我估计大家又该说了:larry说要这样做的。^_^!

呵呵。




--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina 论坛"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: