好,回答非常精辟,醍醐灌顶。本来我以为这是设计的思想上的一点错误。

多谢cnhack!!!

2009/1/16 cnhack TNT <[email protected]>

> 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 <[email protected]>
>
> 首先声明:这只是我的一点认识,不是来招口水的,也不涉及到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 论坛”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复