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

Ruby技术求助:如何用输入对象匹配数组元素?当前代码无法运行

解决Ruby哈希数组匹配的问题

嘿,我帮你梳理下代码里的几个关键问题,分分钟就能搞定:

问题1:哈希键的访问出错了

你定义的宠物列表是字符串键的哈希数组(比如{"id" => "cat"}),但代码里写的list[name]会直接报错——这里的name是个未定义的局部变量,Ruby根本不知道你要访问哈希里的哪个键。

你得把它改成对应字符串键的访问方式:list["name"]。要是之后想用更简洁的符号键,也可以把哈希改成{id: "cat", name: "Kitty"}的形式,这样访问时用list[:name]就行。

问题2:输出ID时的逻辑错误

你写的#{'id'}只是在输出字符串"id",而不是对应宠物的真实ID值。得改成访问哈希里的id键,也就是list["id"](对应字符串键的哈希)或者list[:id](对应符号键的哈希)。

修正后的完整代码

调整后的可运行版本给你放在下面了:

# 定义宠物列表(注意这是Ruby哈希数组,若从JSON解析需额外处理)
my_list = [{"id" => "cat", "name" => "Kitty"}, {"id" => "dog", "name" => "Pop"}]

# 获取命令行输入的宠物名称
@pet = ARGV[0]

# 遍历列表匹配目标宠物
my_list.each do |item|
  if item["name"] == @pet
    puts "The ID of pet: #{item["id"]}"
  end
end

额外小提示

  • 如果运行时没传命令行参数(ARGV[0]为nil),程序不会有输出,你可以加个判断处理这种情况:
    if @pet.nil?
      puts "请输入要查询的宠物名称!"
      exit
    end
    
  • 要是你的列表是从JSON文件来的,记得先引入json库解析:
    require 'json'
    my_list = JSON.parse(File.read("你的宠物文件.json"))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:08