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

如何用Ruby按条件读取YAML文件指定员工哈希及遍历未知员工

问题分析与解决

原代码的核心问题

  1. 遍历员工哈希时,错误地将yaml_employee[key](对应员工的信息哈希)与字符串"jack"做比较,实际应该判断遍历的key是否为"jack"
  2. 代码缺少闭合的end语句,存在语法错误
  3. 输出格式不符合预期,未按要求拼接成指定格式的字符串

需求一:获取指定员工jack的信息

方法一:直接通过键取值(更高效)

require 'yaml'

# 加载YAML文件
yaml_data = YAML.load_file('/etc/puppetlabs/facter/facts.d/details.yaml')
employees = yaml_data['offices']['employees']

# 检查jack是否存在并输出指定信息
if employees.key?('jack')
  jack_info = employees['jack']
  puts "jack, #{jack_info['role']}, #{jack_info['primary_contact']}"
end

方法二:修正遍历逻辑

require 'yaml'

yaml_data = YAML.load_file('/etc/puppetlabs/facter/facts.d/details.yaml')
employees = yaml_data['offices']['employees']

employees.each do |name, info|
  if name == 'jack'
    puts "#{name}, #{info['role']}, #{info['primary_contact']}"
  end
end

需求二:遍历输出所有员工信息

直接遍历员工哈希的键值对,逐个输出即可:

require 'yaml'

yaml_data = YAML.load_file('/etc/puppetlabs/facter/facts.d/details.yaml')
employees = yaml_data['offices']['employees']

employees.each do |name, info|
  puts "#{name}, #{info['role']}, #{info['primary_contact']}"
end

执行后输出:

jack, developer, xyz@gmail.com
tom, tester, abc@gmail.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:50:41