Как обойти "Не могу преобразовать ноль в строку (TypeError)" при чтении CSV-файла в Ruby? - PullRequest
0 голосов
/ 15 ноября 2011

Я работаю над программой, которая в конечном итоге будет сравнивать два CSV-файла и распечатывать любые различия между ними.Тем не менее, в настоящее время я не могу преодолеть «не могу преобразовать ноль в строку (TypeError)» при чтении одного из файлов.

Вот пример строки из проблемного файла CSV:

11/13/15,11:31:00,ABCD,4000150097,1321126281700ABCDEF,WR00002440,,,4001,1392,AI,INTERNAL RETURN,INBOUND,,ABCDEF

А вот мой код:

require 'csv'
class CSVReportCompare

  def initialize(filename_data, filename_compare)
    puts "setting filename_data=", filename_data
    puts "setting compare=", filename_compare
    @filename_data = filename_data
    @filenam_compare = filename_compare
  end

  def printData
    @data = CSV.read(@filename_data)
    puts @data.inspect
  end

  def printCompareData
    @compareData = CSV.read(@filename_compare)
    puts @compareData.inspect
  end

  def compareData

  end

end

c1 = CSVReportCompare.new("data.csv", "compare_data.csv")
c1.printData
c1.printCompareData

В любом случае, есть ли способобойти ошибку?

1 Ответ

2 голосов
/ 15 ноября 2011

У вас есть опечатка в вашем initialize методе:

@filenam_compare = filename_compare
#-------^ missing "e"

Итак, вы устанавливаете неправильную переменную экземпляра. Переменные экземпляра создаются, когда они впервые используются и инициализируются на nil, поэтому позже, когда вы пытаетесь получить доступ к @filename_compare, создается переменная экземпляра с правильным именем и значением * 1009. *.

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