从Ruby系列中获取单个元素

时间:2012-09-30 23:32:53

标签: ruby range

我正在尝试从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"]并尝试以这种方式获取单个元素,那么它可以正常工作。

我假设这是因为我初始化它的方式(使用范围)但是在我看来他们说这是你应该如何初始化数字数组。

我有什么方法可以从我的阵列中获取单个元素吗?

2 个答案:

答案 0 :(得分:5)

这不是一个数组,它是一个范围。您可以使用to_a

将其转换为数组
range = 0..500
arr   = range.to_a

puts arr[7] # => 6

答案 1 :(得分: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