gpt4 book ai didi

ruby - 为什么 array.slice 对 (length, n) 的行为不同

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

如果我有一个数组a:

  1. a[a.length] 返回 nil。好。
  2. a[a.length, x] 返回 []。好。
  3. a[a.length+x, y] 返回 nil。与 2 不一致。

虽然此行为是 documented , 看起来很奇怪。

谁能解释一下这种设计背后的原因?

最佳答案

考虑一下

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]正在访问不在数组中的元素

将切片点视为元素之间而不是元素本身可能会有所帮助。

[ <0> 0 <1> 1 <2> 2 <3> 3 <4> ]

在哪里<n>是元素和数组的开始/结束之间的点。 a[4, 10]然后变成从第 4 点开始的 10 个元素的选择。而 a[5, 10]从第 5 点开始,它不是列表的一部分。

关于ruby - 为什么 array.slice 对 (length, n) 的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3219229/

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