【问题标题】:I want to store results from a loop into an array我想将循环的结果存储到数组中
【发布时间】:2016-06-16 15:16:13
【问题描述】:

我是 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"] 

我想把它用于 puts @twitter_url

["https://twitter.com/UnStock_Market", "https://twitter.com/groupclip"] 

非常感谢您的帮助!

【问题讨论】:

    标签: arrays ruby string


    【解决方案1】:

    您的代码的主要问题是您在每次迭代时将@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
    

    【讨论】:

    • 非常感谢,我要试试这个!!
    【解决方案2】:

    如果你想使用惯用的 Ruby,你可以这样做:

    @angelco_account = ["https://angel.co/unstock", "https://angel.co/groupclip"]
    @twitter_url = @angelco_account.map {|url| Nokogiri::HTML(open("#{url}", "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
    

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多