Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在多维数组上迭代?_Ruby_Arrays_For Loop_Multidimensional Array - Fatal编程技术网

Ruby 在多维数组上迭代?

Ruby 在多维数组上迭代?,ruby,arrays,for-loop,multidimensional-array,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, @s

我有一个名为的数组,它包含以下四个数组:

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
这四个数组是从at.txt文件导入的类的对象

[10000, 150, 5]
[500, 10, 1]
[8000, 171, 3]
[45, 92, 4]
问题是我似乎无法访问所有数组中的第一个值

你可以试试

Undefined method xxx for #Lod:0x0000000022e2d48> (NoMethodError)
您可以访问[0][0]10000或[2][1]171或迭代

a = [[10000, 150, 5], [500, 10, 1],[8000, 171, 3],[45, 92, 4]]
编辑以获取有关使用大括号而不是do的注释:

当然这是可能的,但我相信是的..以优先顺序结束:


获取每个子数组的第一个元素的简单方法是使用转置:

a.each { |row|
  row.each { |column|
      puts column  
  }
}
编辑:实际上更简单更直接

special_number = 45
array = [
  [10000, 150, 5],
  [500, 10, 1],
  [8000, 171, 3],
  [45, 92, 4]
]

p array.transpose.first.count(special_number) #=> 1

这个Lod类从何而来?根据您的描述,这些是阵列,而不是Lod对象。这些数字实际上是指Lod对象还是什么?对不起,是的,内部数组是从文本文件导入的Lod对象:input=file.open(“lodsedler.txt”,“r”)input.each do | line | l=line.split('),如果l[0]。to|i.between?(0,99999)和&l[1]。to|i.between?(1,180)和&l[2]。to|i.between?(1,10)$SALL是否有任何方法可以使用打印。每个循环和块不使用do关键字。如<代码> A.每个{1维}一个维度。{{数} } } } /代码>请考虑更新以上的答案,如果可能的话。谢谢。谢谢你的
。转置

a.each { |row|
  row.each { |column|
      puts column  
  }
}
special_number = 45
array = [
  [10000, 150, 5],
  [500, 10, 1],
  [8000, 171, 3],
  [45, 92, 4]
]

p array.transpose.first.count(special_number) #=> 1
p array.map(&:first).count(special_number) #=> 1