You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中如何将哈希嵌入数组并遍历这些哈希?

创建含多个独立哈希的数组并遍历填充数据

嘿,我来帮你把这段代码理顺并完善,实现创建多个独立参与者哈希、遍历填充数据的需求~

关键注意点先提一嘴

直接用Array.new(4, participant)会踩坑——所有数组元素会指向同一个哈希对象,改一个所有都会跟着变!所以得用块来创建每个独立的哈希实例,保证数据互不干扰。

完整可运行代码

# 先定义单个参与者的哈希模板,包含需要的所有字段
participant_template = { 
  "participant_name" => "", 
  "cupcakes_sold" => 0, 
  "cakes_sold" => 0, 
  "cupcakes_left" => 0, 
  "cakes_left" => 0 
}

# 创建包含4个独立哈希的数组,每个哈希都是模板的副本
participants = Array.new(4) { participant_template.clone }

# 遍历数组,逐个收集每个参与者的信息
participants.each do |participant|
  puts "\nPlease enter participant name: "
  participant["participant_name"] = gets.chomp

  puts "\nHow many cupcakes did #{participant["participant_name"]} sell? "
  participant["cupcakes_sold"] = gets.chomp.to_i

  puts "\nHow many cakes did #{participant["participant_name"]} sell? "
  participant["cakes_sold"] = gets.chomp.to_i

  puts "\nHow many cupcakes does #{participant["participant_name"]} have left? "
  participant["cupcakes_left"] = gets.chomp.to_i

  puts "\nHow many cakes does #{participant["participant_name"]} have left? "
  participant["cakes_left"] = gets.chomp.to_i
end

# 可选:输出所有参与者的数据,验证是否正确填充
puts "\n--- All Participants Data ---"
participants.each_with_index do |participant, index|
  puts "\nParticipant #{index + 1}:"
  participant.each do |key, value|
    puts "#{key}: #{value}"
  end
end

代码里的小细节解释

  • participant_template.clone:每次循环都复制一份模板哈希,确保每个参与者的数据是独立的
  • gets.chomp.to_i:把用户输入的字符串转成整数,毕竟销售/剩余数量是数值类型,方便后续计算
  • each_with_index:遍历输出的时候带上索引,能清晰区分第几个参与者的信息

内容的提问来源于stack exchange,提问作者Chantelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:46:07