()[]的困惑

()[]的困惑

谁能帮忙解释一下这句代码,Perl语言学习第三版中的"范围操作符",谢了
$hexdigit = (0 .. 9, 'a' .. 'f')[$num & 15];

#获得一个十六进制位
你说说哪个地方不懂吧
都看到programming perl了,不会都不懂吧
(0 .. 9, 'a' .. 'f') ---> a list

$num & 15  ---> an expression

$num & 15 也可用 $num % 16
我明白 (0 .. 9, 'a' .. 'f') 这个是列表,我也明白里面的。。是范围操作符,
我不明白的是后面[$num & 15]  以及 ()[]   这两对括号放一起是什么意思,还有顺便想问一下&到底是怎么进行位运算

二进制位 与操作
list slice
看小骆驼的Some advanced perl technique里面有讲
注意上下文。
范围操作符在列表上下文返回一个列表。
(1..3) 的意思就是 (1, 2, 3)


QUOTE:
原帖由 gaoquanlong 于 2008-9-5 15:17 发表
谁能帮忙解释一下这句代码,Perl语言学习第三版中的"范围操作符",谢了
$hexdigit = (0 .. 9, 'a' .. 'f')[$num & 15];

#获得一个十六进制位

你这样来理解好了

my @hex_num = (0 .. 9, 'a' .. 'f');
my $index = $num & 15;
my $hexdigit = $hex_num[$index];
(0 .. 9, 'a' .. 'f') = (0, 1, 2, 3, 4, 5, ... , 9, 'a', 'b', ..., 'f')