我正在尝试从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"]
并尝试以这种方式获取单个元素,那么它可以正常工作。
我假设这是因为我初始化它的方式(使用范围)但是在我看来他们说这是你应该如何初始化数字数组。
我有什么方法可以从我的阵列中获取单个元素吗?
答案 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