Ошибка в ruby

программирование ruby

Решил поупражняться в ruby и написать скрипт, считающий производную.
В конце возникла проблема:
D:/devel/NetBeansProjects/tok/lib/main.rb:90:in `concat': can't convert nil into String (TypeError)
from D:/devel/NetBeansProjects/tok/lib/main.rb:90:in `block in result'
from D:/devel/NetBeansProjects/tok/lib/main.rb:88:in `each'
from D:/devel/NetBeansProjects/tok/lib/main.rb:88:in `result'
from D:/devel/NetBeansProjects/tok/lib/main.rb:101:in `<main>'

@result - массив с элементами ответа (24x^2, 4, 6x^2 и т.д.), а @signs - знаки между ними. Пробовал вместо @signs[count] ставить @signs[<какое_нибудь_число>], тогда все было в порядке, но с переменной выдает ошибку. В чем проблема?

def result
count = 0
@result_a = ''
@result.each do |l|
@result_a.concat(l)
@result_a.concat(@signs[count])
count += 1
end
@result = @result_a
end
Ответы:
Очевидно, что в @signs[count] у тебя nil вместо строки. Почему? Тебе виднее, такое например может быть, если у тебя @signs.size < @result.size.
Так же рекомендую полюбить писать чистые методы, использовать в данной ситуации each_with_index вместо each и count +=1, да и вообще всё можно было бы свести к:


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.