1

500 個の数字の配列から 1 つの要素を出力しようとしています。を使用して初期化しました

arr = (1..500)

forループから印刷できます:

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

を使用して印刷できますarr.eachが、1 つの要素だけを取得しようとするとエラーが発生します。

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

Here is how to do it without converting the whole thing into array.

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 に答える