如何组合打印Ruby中嵌套对象结构的数组哈希值并格式化输出
问题分析
原有代码的核心问题如下:
- 嵌套了两层遍历哈希值的逻辑,每个卡片元素会被重复处理两次,导致输出内容重复
- 每次遍历单条卡片数据就调用
puts,会强制触发换行,且固定拼接/后缀会导致行末尾出现多余的分隔符
修正后代码
init_cards_j.each do |card_group| # 取当前哈希存储的卡片数组,按num字段排序 sorted_cards = card_group.values.first.sort_by { |item| item[:num] } # 转换格式后拼接为整行输出 output_line = sorted_cards.map { |item| "Card #{item[:num]}: #{item[:head]} head" }.join(' / ') puts output_line end
逻辑说明
- 直接遍历数组的每个哈希元素,无需通过索引取值,写法更简洁
- 内置
sort_by逻辑满足按num字段排序的需求 - 先将同一组内的所有卡片转换为目标格式的字符串,再通过
join方法用/拼接,自动避免行尾出现多余分隔符 - 整行内容拼接完成后再调用
puts,保证同一组的卡片输出在同一行
内容的提问来源于stack exchange,提问作者Rhona
相关产品推荐
相关产品推荐

