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