嵌套数组将内部数组打印为空字符串-Ruby

时间:2019-02-20 18:57:05

标签: ruby

address_book = [
['Company1','123 Mission Blvd', 'San Francisco','California', 12345, '415-555-4444','CompanyOne@companyone.com','https://company1.com'], 
['Company2','77 Market Street', 'San Francisco','California', 94111,'415-444 4444','Company2@company2.com','https://company2.com']
]

我在这里有一个地址块,我想循环访问并发送到下面的空字符串。

email_temp = ""


address_book.each do |address_block|
  address_block.each do |company_name, address, city, state, zip, tel, email, web_address|
    email_temp << "Company Name: #{company_name} #{address} #{city} #{state} #{zip} Tel: #{tel} #{email} #{web_address}"
  end
end

我从上面的开始,但是在每次迭代时,它都在内部数组的每个元素之前打印公司名称。我该如何解决? 我想保持它很简单。只是想找出问题所在。

1 个答案:

答案 0 :(得分:0)

如果数组为单个,则以下用法不正确:

address_block.each do |company_name, address, city, state, zip, tel, email, web_address|

因为address_block是一个数组,只有1个参数作为数组成员传递给block。

因此,您可以使用以下代码段进行更改。

address_book.each do |address_block|
  email_temp << "Company Name: #{address_block.first} "
  email_temp << address_block[1..4].join(' ')
  email_temp << " Tel: #{address_block[5]} #{address_block[6..7].join(' ') }"
end

更新 感谢@sebastian-palma,在嵌套数组方面,我学到了有关红宝石块的新知识。因此,我更新了此问题的解决方案。但是由于代码有异味,我不建议使用此解决方案。

address_book.each do |company_name, address, city, state, zip, tel, email, web_address|
  email_temp << "Company Name: #{company_name} #{address} #{city} #{state} #{zip} Tel: #{tel} #{email} #{web_address}"
end