Ruby 为什么会出现这样的错误:未定义的方法“[]';对于0..5:范围(NoMethodError)
我正在用Ruby创建一个状态机简化程序。在循环遍历我为简化状态机而创建的表时,它正确地运行并生成所需的输出,但是,我得到以下错误::Ruby 为什么会出现这样的错误:未定义的方法“[]';对于0..5:范围(NoMethodError),ruby,nomethoderror,Ruby,Nomethoderror,我正在用Ruby创建一个状态机简化程序。在循环遍历我为简化状态机而创建的表时,它正确地运行并生成所需的输出,但是,我得到以下错误:: undefined method `[]' for 0..5:Range (NoMethodError) from C:/Users/Sara/workspace/StateMachineSimplifier/statemachine_simplifier.rb:64:in each from C:/Users/Sara/workspace/Sta
undefined method `[]' for 0..5:Range (NoMethodError)
from C:/Users/Sara/workspace/StateMachineSimplifier/statemachine_simplifier.rb:64:in each
from C:/Users/Sara/workspace/StateMachineSimplifier/statemachine_simplifier.rb:64:in x_out
from C:/Users/Sara/workspace/StateMachineSimplifier/statemachine_simplifier.rb:268:in main
from C:/Users/Sara/workspace/StateMachineSimplifier/statemachine_simplifier.rb:274:in <main>
我知道问题在于调用函数,但我不确定如何正确调用它,以获得适当最小化状态表的输出 您的问题在于:
pos_comb = x_out(pos_comb, s_table)
xout
返回循环的外部值,该值是一个范围
。在ruby中,for循环是一个表达式。例如:
x = for i in (0..5) do puts i end # x is equal to (0..5)
这和
def x_out()
for i in (0..5) do puts i end
end
x = x_out() # x is equal to (0..5)
从x\u out
返回后,将覆盖pos\u comb
的值,范围为0..5
。然后将其传递回x_out
,这会导致while
循环的第二次迭代出现问题
现在,您似乎希望从x_out
函数内部返回arr1
,因此请尝试将
...
end
arr1 # <- insert this at the last line in your function
end
。。。
终止
arr1#您没有显示正确的代码。问题似乎是C:/Users/Sara/workspace/statemachinesimplier/statemachinesimplier.rb
第64行中的每个语句都是针对0中的i.((arr1.size)-1)我在代码中没有任何each语句,我使用的是eclipse,这就是for循环出错的原因。这真的很奇怪。我可以使用(0..5)[1]
重新创建错误,但没有看到类似的情况。您可以尝试从命令行运行,或者重新启动eclipse吗。我不太熟悉Ruby+EclipseDev,但知道在过去需要用Java+Eclipse重新启动的问题。这确实有帮助。我已经确定它正在将我的数组(arr1)最后更改为0..5,这导致了问题。现在,要确定原因。您确定第64行不在0..((arr1[i].size)-1)中j的处吗?因为使用了一个索引[]
操作符,所以它是有意义的。
def x_out()
for i in (0..5) do puts i end
end
x = x_out() # x is equal to (0..5)
...
end
arr1 # <- insert this at the last line in your function
end