gpt4 book ai didi

arrays - Ruby 中的数组切片 : explanation for illogical behaviour (taken from Rubykoans. com)

转载 作者:数据小太阳 更新时间:2023-10-29 06:16:30 27 4
gpt4 key购买 nike

我正在做 Ruby Koans 中的练习我对以下 Ruby 怪癖感到震惊,我发现它真的无法解释:

array = [:peanut, :butter, :and, :jelly]

array[0] #=> :peanut #OK!
array[0,1] #=> [:peanut] #OK!
array[0,2] #=> [:peanut, :butter] #OK!
array[0,0] #=> [] #OK!
array[2] #=> :and #OK!
array[2,2] #=> [:and, :jelly] #OK!
array[2,20] #=> [:and, :jelly] #OK!
array[4] #=> nil #OK!
array[4,0] #=> [] #HUH?? Why's that?
array[4,100] #=> [] #Still HUH, but consistent with previous one
array[5] #=> nil #consistent with array[4] #=> nil
array[5,0] #=> nil #WOW. Now I don't understand anything anymore...

那么为什么 array[5,0] 不等于 array[4,0]?当您从第 (length+1)th 位置开始时,数组切片表现如此奇怪的原因是什么?

最佳答案

切片和索引是两种不同的操作,从另一个推断行为是您的问题所在。

slice 中的第一个参数标识的不是元素而是元素之间的位置,定义跨度(而不是元素本身):

  :peanut   :butter   :and   :jelly
0 1 2 3 4

4 仍在数组中,只是勉强;如果请求 0 个元素,则会得到数组的空端。但是没有索引 5,所以你不能从那里切片。

当您进行索引时(如 array[4]),您指向的是元素本身,因此索引仅从 0 到 3。

关于arrays - Ruby 中的数组切片 : explanation for illogical behaviour (taken from Rubykoans. com),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3568222/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com