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
相关产品推荐
相关产品推荐

