我从一个方法调用返回一个链接数组,其中validate_pdf_links()
返回数组:
broken_pdf_links = broken_pdf_links + validate_pdf_links()
我在具有多个链接的多个页面上执行此操作,因此其工作方式如下:
validate_pdf_links()
检查该页面上的所有链接。我想知道链接断开时我所在的页面,所以我使用以下内容进行页面识别:
page_name = @browser.title
我想要一个输出:
broken_pdf_links.each do |pdf|
puts "The pdf link #{pdf} was broke on page #{page_name}
如何组装散列或数组以包含元素并以我建议的方式检索它们?
编辑::::::正在尝试:
broken_pdf_links.each {|pdf| broken_pdfs = broken_pdfs.push[pdf,page_name]}
存储,然后
broken_pdfs.each do |broke_pdf|
puts "Link #{broke_pdf[0][0]} on Page #{broke_pdf[0][1]}\n"
pdf_index += 1
end
阅读
但我在store命令中收到错误“TypeError:无法将Array转换为Integer”。
答案 0 :(得分:1)
每页上可能有多个断开的链接。哈希在这里会很好。
broken_pdf_links = {}
broken_pdf_links.merge!(:page_name => validate_pdf_links())
broken_pdf_links.each do |k,v|
puts "The pdf link(s) #{v} was broken on page #{k}"
end
<强>输出:强>
pdf链接[“fail1”,“fail2”,“fail3”]在第page_name页上被破坏
pdf链接[“fail1”]在页面other_page上被破坏
您可以进一步使用数组并对其进行格式化。
答案 1 :(得分:1)
而不是:
broken_pdf_links.each {|pdf| broken_pdfs = broken_pdfs.push[pdf,page_name]}
使用:
broken_pdfs = broken_pdf_links.map { |pdf| [pdf,page_name] }
大多数情况下,你混合了几种聚合子阵列的方法。
您可以使用更短,更直接的map
或:
broken_pdfs = []
broken_pdf.links.each do |pdf|
broken_pdfs += [pdf, page_name]
end
另一个例子是:
broken_pdfs = []
broken_pdf.links.each do |pdf|
broken_pdfs.push([pdf, page_name])
end