类型错误:无法将模块1::MyClass转换为整数,我找不到这里的错误在哪里



我想比较这些对象的类的不同模块中不同对象的属性,但是我收到此错误:

类型错误:无法将模块 1::MyClass 转换为整数

我写attr_reader :value,当我写"put array[0].value"时,一切都是正确的。问题出在循环中:

num2 = 0
j = 0

for i in @array
if  @array[i].value > num2
num2 = @array[i].value
j = i
end
end

for x in y循环中,x不是计数器,而是当前迭代中y内的项。因此,通过使用@array[i].value,您实际上是在执行抛出类型错误的@array[@array[i].value].value

你想做这样的事情:

for a in @array
if a.value > num2
num2 = a.value
j = i # what is this?
end
end

或者,如果您想将i用作计数器,也可以使用@array.length.times do |i|之类的东西。

最新更新