Ruby 在二维数组中计算值并返回坐标

Ruby 在二维数组中计算值并返回坐标,ruby,Ruby,我正在尝试编写一个方法,该方法将在2d数组中循环,并返回符合给定条件的元素坐标(在本例中,元素值==1): 我得到了这个错误: block in eval': undefined method `each_index' for 0:Fixnum (NoMethodError) 关于可能发生的事情有什么提示吗 array.each_index do |x| 将此索引捕获到x变量中,然后您尝试使用数字上的每个_索引。即 x.each_index do |y| 解决此问题为我们提供了以下功能:

我正在尝试编写一个方法,该方法将在2d数组中循环,并返回符合给定条件的元素坐标(在本例中,元素值
==1
):

我得到了这个错误:

block in eval': undefined method `each_index' for 0:Fixnum (NoMethodError)
关于可能发生的事情有什么提示吗

array.each_index do |x|
将此索引捕获到x变量中,然后您尝试使用数字上的每个_索引。即

x.each_index do |y|
解决此问题为我们提供了以下功能:

def findMatchingCords(array)
  array.each_index do |x|
    array[x].each_index do |y|
     if array[x][y] == 1 then 
      puts "X: #{x} Y: #{y}"
     end
   end
 end
end
现在找到匹配跳线(阵列)产量

正如所料。

您可以使用该类


值得一提的是,
eval
不是函数的好名字,因为它与现有方法冲突。谢谢!这确实奏效了,我现在更清楚我在循环什么,每个索引循环。我正在考虑关于更改方法名称的建议。这也很有用,谢谢Cary。我宁愿使用另一种结构,因为它现在对我来说更自然,我刚开始使用Ruby,我仍然不习惯用一种“rubysh”的方式思考。
def findMatchingCords(array)
  array.each_index do |x|
    array[x].each_index do |y|
     if array[x][y] == 1 then 
      puts "X: #{x} Y: #{y}"
     end
   end
 end
end
X: 0 Y: 0
X: 1 Y: 1
X: 2 Y: 0
X: 2 Y: 3
X: 3 Y: 1
require 'matrix'

def evaluate(array)  
  Matrix[*array].each_with_index { |e,x,y| puts "X: #{x} Y: #{y}" if e == 1 }
end

evaluate(array)
X: 0 Y: 0
X: 1 Y: 1
X: 2 Y: 0
X: 2 Y: 3
X: 3 Y: 1