如果我有一个数组a:
a[a.length]回报nil.好.a[a.length, x]回报[].好.a[a.length+x, y]回报nil.与2不一致.虽然这种行为被记录在案,这似乎很奇怪.
任何人都可以解释这种设计背后的原因吗?
Joh*_*ooy 28
考虑一下
a = [0, 1, 2, 3] #=> [0, 1, 2, 3]
a[0, 10] #=> [0, 1, 2, 3]
a[1, 10] #=> [1, 2, 3]
a[2, 10] #=> [2, 3]
a[3, 10] #=> [3]
a[4, 10] #=> []
a[5, 10] #=> nil
Run Code Online (Sandbox Code Playgroud)
那么阵列的末端和末尾a[4, 10]之间的切片3也是如此[]
在哪里访问a[4]和a[5, 10]访问不在数组中的元素
将切片点视为元素之间而不是元素本身可能会有所帮助.
看看你友好的Lispy语言的答案.您正在寻找的理念始于其专业是LISt Processing的语言.例如,这是在Haskell中创建列表的一种方法:
1:[] => [1]
1:2:3:[] => [1,2,3]
Run Code Online (Sandbox Code Playgroud)
这被称为consing,用于"构建"列表.如果想法还没有点击,请考虑这个:通过向空列表添加元素来创建数组,而不是'nil'.
| 归档时间: |
|
| 查看次数: |
2804 次 |
| 最近记录: |