Почему array.slice ведет себя по-другому для (длина, n)

Если у меня есть массив a:

  1. a[a.length] возвраты nil. Хороший.
  2. a[a.length, x] возвраты []. Хороший.
  3. a[a.length+x, y] возвраты nil. Несовместимый 2.

В то время как это поведение документируется, это кажется нечетным.

Кто-либо может объяснить причины позади этого дизайна?

24
задан Diego Mijelshon 4 October 2013 в 14:32
поделиться

1 ответ

Рассмотрим это

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

Итак a [4, 10] - это срез между 3 и концом массива, который равен []

Где как a [4] и a [5, 10] обращаются к элементам, которых нет в массиве

Это может помочь думать о точках среза как о находящихся между элементами, а не о сами элементы.

28
ответ дан 28 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: