1

我正在尝试从 500 个数字的数组中打印单个元素。我使用它初始化它

arr = (1..500)

我可以从for循环打印:

for n in arr
  print n +"\n"
end

我可以使用 打印arr.each,但如果我尝试只抓取一个元素,则会出现错误。

print arr[0]
>undefined method `[]' for 1..500:Range (NoMethodError)

如果我初始化一个数组arr2 = ["a", "b", "c"]并尝试以这种方式获取单个元素,它就可以正常工作。

我假设这是因为我初始化它的方式(使用范围),但是无论我在哪里看,他们都说你应该如何初始化一个数字数组。

有什么办法让我从我的数组中获取一个元素?

4

2 回答 2

5

那不是数组,而是范围。您可以使用以下方法将其转换为数组to_a

range = 0..500
arr   = range.to_a

puts arr[7] # => 6
于 2012-09-30T23:35:01.367 回答
0

这是如何在不将整个事物转换为数组的情况下做到这一点。

class Range
  def index(n)
    return nil unless n < self.size
    self.each_with_index { |x, i| return x if i == n }
  end
end

range = 0..100000000000
range.index(120) # => 120
于 2016-04-04T09:31:48.787 回答