编辑:made a github issue,一天后由jashkenas关闭。因此,外卖基本上是“按预期工作”。
coffee> arr
[ 0,
1,
2,
3,
'A',
'K' ]
coffee> arr[...]
[ 0,
1,
2,
3,
'A',
'K' ]
coffee> arr[..]
[ 0,
1,
2,
3,
'A',
'K' ]
According to the docs,那些应该是不同的。
有两个点(3..6),范围包括(3,4,5,6);有三个点(3 ... 6),范围不包括结尾(3,4,5)。
生成的两个slice
语句是相同的。在我看来..
应该产生.slice(0)
而...
应该产生.slice(0, -1)
我错过了什么或看到了错误?
1.7.1
答案 0 :(得分:4)
然后文件继续说:
切片索引具有有用的默认值。省略的第一个索引默认值 为零,省略的第二个索引默认为数组的大小。
这与您所看到的一致。数组的长度为6,所以:
[..]
相当于[0..6]
,可编译为.slice(0,7)
[...]
相当于[0...6]
,可编译为.slice(0,6)
如果数组长度为6,则.slice(0,6)
和.slice(0,7)
都会返回所有元素,因此两者都相当于.slice(0)
,这是[..]
和{{1}编译到。
如果省略的第二个索引默认为数组大小减去1,那么您的期望是这种情况,但事实并非如此。