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

Ruby中hash_selector方法如何实现无参数时返回原哈希?

解决Ruby hash_selector方法的参数为空返回问题

问题分析

你的代码目前在没有传入额外参数时返回空哈希,不符合需求中“返回原hash”的要求,只需要添加一个简单的条件判断就能解决。

修改后的基础实现

def hash_selector(hash, *args)
  # 当没有额外参数时直接返回原哈希
  return hash if args.empty?

  new_hash = {}
  args.each do |arg| 
    new_hash[arg] = hash[arg] if hash.has_key?(arg)
  end

  new_hash
end

简洁优化写法(Ruby 2.5+)

Ruby内置的Hash#slice方法正好能实现筛选指定键的功能,结合三元运算符可以让代码更简洁:

def hash_selector(hash, *args)
  args.empty? ? hash : hash.slice(*args)
end

说明

  • args.empty?判断是否传入了额外参数,为空则返回原哈希
  • hash.slice(*args)会生成一个新哈希,仅包含原哈希中存在的指定键(不存在的键自动忽略),完全匹配需求中的筛选逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:35:25