我完全是 Ruby 的菜鸟,所以我正在向了解的人学习 :)我确实在寻找这个答案,但徒劳无功......
我想将循环的结果放入一个新数组中。但是我不能...
@angelco_account = ["https://angel.co/unstock", "https://angel.co/groupclip"]
@angelco_account.each do |i|
@twitter_url = []
@twitter_url << Nokogiri::HTML(open("#{i}", "User-Agent" => "Mozilla/5.001(windows; U; NT4.0; en-us) Gecko/25250101")).css('a.twitter_url.icon_link.fontello-twitter')[0]["href"]
puts @twitter_url
end
我的 irb 得到了这个结果
https://twitter.com/UnStock_Market
https://twitter.com/groupclip
=> ["https://angel.co/unstock", "https://angel.co/groupclip"]
我想把它放在 @twitter_url
["https://twitter.com/UnStock_Market", "https://twitter.com/groupclip"]
非常感谢您的帮助!
您的代码的主要问题是您在每次迭代 上将@twitter_url
分配给空数组。一般来说,换行:
@angelco_account.each do |i|
@twitter_url = []
到:
@twitter_url = []
@angelco_account.each do |i|
应该可以解决问题。但为此目的,最好使用 Enumerable#each_with_object
:
@twitter_url = @angelco_account.each_with_object([]) do |i, memo|
memo << Nokogiri::HTML(open("#{i}", ...).
css('a.twitter_url.icon_link.fontello-twitter')[0]["href"]
end
puts @twitter_url
或者,在这种特殊情况下,Enumerable#map
就足够了:
@twitter_url = @angelco_account.map do |account|
Nokogiri::HTML(open("#{i}", ...).
css('a.twitter_url.icon_link.fontello-twitter')[0]["href"]
end
puts @twitter_url
我是一名优秀的程序员,十分优秀!