1

请参阅下面的更新

所以这是我的代码:

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)

想法?

更新

当我执行 aputs list.inspect时,它会输出整个数组并且不会引发错误。一旦我开始遍历数组,错误似乎就会出现。

更新 2

所以我在 Textmate 中运行它时遇到了这个错误。但是,我从 IRB 中获取了输出list.inspect并进行了操作。然后我修改了 IRB 中的列表元素,它可以正常工作而不会给我一个错误。可能是 Textmate 抛出了这个错误,而不是 Ruby 或我的脚本?

4

2 回答 2

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
于 2012-04-18T23:23:13.067 回答
1

也许这样做更有意义:

urls = list.map{|url| url + '/web/'}
于 2012-04-19T01:29:54.097 回答