perl – 为什么我不能写@F [1 ..- 1]来获取元素1..last?

前端之家收集整理的这篇文章主要介绍了perl – 为什么我不能写@F [1 ..- 1]来获取元素1..last?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Perl中,数组索引-1表示最后一个元素:

@F=(1,2,3);
print $F[-1]; # result: 3

您也可以使用$#表示法,这里是$#F:

@F=(1,3);
print $F[$#F]; # result: 3

因此,当我想指定范围中的最后一个元素时,为什么-1和$#F不会给出相同的结果:

print @F[1..$#F]; # 23
print @F[1..-1];  # <empty>

数组@F [1 ..- 1]应该包含从元素1到最后一个元素的所有元素,不是吗?

解决方法

你的问题是@a [b..c]语法涉及两个不同的操作.首先评估b..c,返回一个列表,然后使用该列表评估@a [].范围运算符..不知道它被用于数组下标,所以就它而言,1和-1之间没有任何内容.它返回空列表,因此数组返回一个空切片.

猜你在找的Perl相关文章