gpt4 book ai didi

arrays - 数组切片中没有左边框的 Ruby 范围

转载 作者:行者123 更新时间:2023-12-05 04:23:10 26 4
gpt4 key购买 nike

今天我发现了在 Ruby 中切片数组的有趣方法:

a = [0,1,2,3,4]
p a[...4] == a[0...4] # True
p a[...4] # [0,1,2,3]

请解释这是如何工作的。 (...4) => (无...4)。但是写(...4).to_a时出现错误:Cannot Iterate from NilClass.

最佳答案

Ruby 2.6 引入了无限范围:

# It's the same
2..
2..nil
Range.new(2, nil)

Ruby 2.7 引入了 beginless 范围:

# It's the same
..2
nil..2
Range.new(nil, 2)

Array#[] with range 返回由索引范围指定的子数组

索引从0开始,因此当使用beginless range时,它返回从第一个元素到指定元素的子数组。同样对于无尽

同时您不会遍历这些范围,您只是获取与范围匹配的元素

a = [0, 1, 2, 3, 4]

a[..2] # => [0, 1, 2]
a[2..] # => [2, 3, 4]

但是当你尝试将 beginless/endless range 转换为数组(或尝试遍历它)时,你当然会遇到异常,因为不可能有无限数量的元素数组,数组总是有大小

这就是为什么 (2..).to_a(..2).to_a 引发异常

关于arrays - 数组切片中没有左边框的 Ruby 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73782149/

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