我想比较这些对象的类的不同模块中不同对象的属性,但是我收到此错误:
类型错误:无法将模块 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|
之类的东西。