Ruby 在二维数组中计算值并返回坐标
我正在尝试编写一个方法,该方法将在2d数组中循环,并返回符合给定条件的元素坐标(在本例中,元素值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| 解决此问题为我们提供了以下功能:
==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