请参阅下面的更新
所以这是我的代码:
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 或我的脚本吗?
你传递什么作为列表?
我认为应该是
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
也许只做以下事情更有意义:
urls = list.map{|url| url + '/web/'}