См. обновления ниже
Итак, это мой код:
def add_category(new_url)
new_url + '/web/'
end
url = 'http://www.someurl.com'
def modify_my_list(list)
puts "The number of links in this list are: #{list.count}"
list.each do |i, k|
k = add_category(k)
puts k
end
end
modify_my_list(list)
По сути, я просматриваю список ссылок, которые находятся на определенном URL-адресе, и обрабатываю их.
Но вывод, который я вижу (то есть список ссылок), меньше, чем я знаю, что должен видеть.
Другими словами, количество ссылок, которые печатаются на моем экране, меньше количества, которое печатается с list.count
.
Это ошибка, которую я получаю:
Errno::EINVAL: Invalid argument
method write in my-search.rb at line 83 => puts k
method puts in my-search.rb at line 83
method modify_my_list in my-search.rb at line 83
method each in my-search.rb at line 81 => list.each do |i, k|
method modify_my_list in my-search.rb at line 81
at top level in my-search.rb at line 87 => modify_city_list(list)
Мысли?
Обновить
Когда я делаю puts list.inspect
, он выводит весь массив и не выдает ошибку. Ошибка появляется, когда я начинаю перебирать массив.
Обновление 2
Поэтому я сталкиваюсь с этой ошибкой, когда запускаю ее в Textmate. Однако я взял вывод из list.inspect
и сделал это в IRB. Затем я изменил элементы списка в IRB, и он работает без ошибок. Может быть, эту ошибку выдает Textmate, а не Ruby или мой скрипт?
each_with_index
-TypeError: String can't be coerced into Fixnum
. 19.04.2012list = my_list(url)
. Данные будут примерно такими:list[0][0] = Honda, list[0][1] = 'www.honda.com'
. 19.04.2012k
— это обычный URL-адрес —www.honda.com
, а значение послеk
—www.honda.com/web
. Так что эта часть работает правильно, что я и подозревал. 19.04.2012> b1xz > b2xz => [["a1", "b1"], ["a2", "b2"]]
19.04.2012add_category
на массив из двух или более значений, поэтому вывод ссылок удваивается. Таким образом, точка, в которой он перестает печатать, является другой ссылкой, чем если бы я только что вернул 1 единственное значение. Но оба выводят примерно 520 строк. 19.04.2012