Ошибка типа: не могу преобразовать Module1 :: MyClass в Integer, я не могу найти, где здесь ошибка - PullRequest
0 голосов
/ 15 октября 2019

Я хочу сравнить атрибуты разных объектов в другом модуле классов этих объектов, но я получаю эту ошибку:

Ошибка типа: невозможно преобразовать Module1 :: MyClass в Integer

Я написал 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

1 Ответ

0 голосов
/ 15 октября 2019

В цикле 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

Или вы также можете использовать что-то вроде@array.length.times do |i|, если вы хотите использовать i в качестве счетчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...