返回数组中的项目列表时,我得到 Errno::EINVAL:Textmate 中的参数无效 - 但不是 IRB



请参阅下面的更新

所以这是我的代码:

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/'}

最新更新