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

标签 perl arrays syntax notation

在 Perl 中,数组索引 -1表示最后一个元素:

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

您也可以使用 $#符号代替,这里$#F :
@F=(1,2,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 - 为什么我不能写@F[1..-1] 来获取元素 1..last?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1150153/

相关文章:

linux - Perl:关闭信号处理程序中的子进程管道挂起?

java - 如何将未知数量的身份添加到最大数量的列表中

javascript - 使用javascript将唯一对象插入到对象数组中?

syntax - Groovy 范围,步长为 0.5

javascript - 在 node.js 中,如何以最轻量级的方式检查给定的一串代码在语法上是否正确?

vb.net - 解决方法互斥 "UseShellExecute"和 "RedirectStandardOutput"

perl - 批量重命名目录中的文件名

arrays - 如何用不同数组中的另一个项目替换数组中的一个项目?

python - python中定义函数,声明变量的正确语法是什么?

Perl:函数参数不足