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