2017-01-06 5 views
1

У меня этот вопрос, когда я делаю рубиновые коаны. Учитывая этот массив:Почему разрезание Ruby Array иногда возвращает nil и иногда возвращает пустой массив?

array = [1, 2, 3, 4] 

array[4, 0] равна []. Однако array[5, 0] равно nil.

И 4, и 5 не указаны. Почему они возвращают разные вещи?

ответ

1

Первый параметр Array#slice(start,length) место между индексами где нарезка должна начинаться:

array = [1, 2, 3, 4] 
# elements   : [ 1 2 3 4 ] 
#       ↑ ↑ ↑ ↑ ↑ 
# slice start indices : 0 1 2 3 4 

slice(0,_) начинается слева от 1, slice(3,_) начинается слева от 4 и slice(4,_) начинается на последнем возможном месте: прямо от 4.

slice(4,0) по-прежнему внутри array, это пустой массив справа от 4.

slice(5,0) не внутри array больше, это nil.

Смежные вопросы