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)

考え?

アップデート

を実行するputs list.inspectと、配列全体が出力され、エラーはスローされません。配列の反復処理を開始すると、エラーが発生するようです。

更新 2

そのため、Textmate で実行すると、このエラーが発生します。ただし、出力を取得しlist.inspectてIRBで実行しました。次に、IRB でリスト要素を変更したところ、エラーが発生することなく動作しました。Rubyや私のスクリプトではなく、Textmateがこのエラーをスローしている可能性がありますか?

4

2 に答える 2

2

リストとして何を渡していますか?

そうあるべきだと思う

list.each do |k|

また

list.each_with_index do |k, i|

list が 2 次元配列の場合、コードの単純化されたバージョンは次のようになります。

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 に答える