+ -
当前位置:首页 → 问答吧 → 请问我钻牛角尖了吗??

请问我钻牛角尖了吗??

时间:2011-03-24

来源:互联网

@a = (0,100,200,300) ;
@b = @a[0,2] ; #(0,200)
$c = @a[0,2] ; #200

最后一条语句难道不是将@a[0,2]置于标量环境吗?应该得到$c=2呀!!为什么是第二个元素??

作者: lion7beckham   发布时间: 2011-03-24

@a[0,2]在右边的值是个列表,数组在 scalar context 下返回元素个数,但是列表在 scalar context 只相当于逗号表达式返回最后那个元素

作者: zhlong8   发布时间: 2011-03-24

$c = \@a;
用引用吧!~

作者: liuqiao007   发布时间: 2011-03-24

回复 zhlong8


    谢谢zhlong8!我明白啦!
   原来是这样:① 数组在标量环境返回元素个数,而列表在标量环境返回末元素;②数组的唯一表示方法是@a,而@a[0,2]是列表的表示方法!这一点我原来搞混了……③只有LIST Context,而没有ARRAY Context。
   再次感谢~~

作者: lion7beckham   发布时间: 2011-03-24

回复 zhlong8


   上面的解释正解,其实是@a[0,2]=(0,200);  array slice;

作者: liyangole   发布时间: 2011-03-24