查看以下更新
所以这是我的代码:
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)
基本上我正在做的是浏览特定网址上的链接列表并对其进行处理。
但我看到的输出(即链接列表)比我所知道的要少。
换句话说,我的屏幕上打印的链接数量少于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或我的脚本吗?
答案 0 :(得分:2)
你在列表中传递了什么?
我认为应该是
list.each do |k|
或
list.each_with_index do |k, i|
如果list是二维数组,则代码的简化版本为:
b = [['a1','b1'], ['a2','b2']]
b.each do |k, v|
v = v + 'xz'
puts v
end
你可以在irb上试试看它是否适合你?
编辑:
你试过这个吗?
list.each do |k|
k[1] = add_category(k[1])
puts k[1]
end
答案 1 :(得分:1)
或许这样做更有意义:
urls = list.map{|url| url + '/web/'}