迭代多维数组?

Chr*_*ian 0 ruby arrays for-loop multidimensional-array

class Lod

attr_accessor :lodnr
attr_accessor :lobnr
attr_accessor :stknr

def initialize(lodnr, lobnr, stknr)
    @lodnr = lodnr
    @lobnr = lobnr
    @stknr = stknr.chomp
end

def to_s
    "%8s, %5s, %3s" % [@lodnr, @lobnr, @stknr]
end
end
Run Code Online (Sandbox Code Playgroud)

我有一个sold包含这四个数组的数组:

[10000, 150, 5]
[500, 10, 1]
[8000, 171, 3]
[45, 92, 4]
Run Code Online (Sandbox Code Playgroud)

这四个数组是从.txt文件导入的类的对象.

    input = File.open("lodsedler.txt", "r")
input.each do |line|
    l = line.split(',')
    if l[0].to_i.between?(0, 99999) && l[1].to_i.between?(1, 180) && l[2].to_i.between?(1, 10)
        sold << Lod.new(l[0], l[1], l[2])
    else
        next
    end
end
Run Code Online (Sandbox Code Playgroud)

我想计算每个数组中的第一个值,查找存储在其中的随机选择的数字first.

我得到的错误总是这样,无论我尝试什么:

Undefined method xxx for #Lod:0x0000000022e2d48> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法访问所有数组中的第一个值.

Dav*_*idC 6

你可以试试

a = [[10000, 150, 5], [500, 10, 1],[8000, 171, 3],[45, 92, 4]]
Run Code Online (Sandbox Code Playgroud)

您可以访问[0] [0] 10000或[2] [1] 171或迭代

a.each do |row|
  row.each do |column|
      puts column  
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑评论有关使用大括号而不是do:

当然有可能,但我相信做...首选:https://stackoverflow.com/a/5587403/514463

a.each { |row|
  row.each { |column|
      puts column  
  }
}
Run Code Online (Sandbox Code Playgroud)