Z
ZHANK
集合与枚举

哈希 Hash

Hash 创建/访问、Symbol 键(高效)、merge、fetch、default 默认值

哈希 Hash

Ruby Hash 用 =>key: value 语法创建。Symbol 做键最高效。fetch 带默认值,merge 合并。

学完本章你将: 掌握 Hash 创建/访问、Symbol 键、merge/fetch、default。


创建与访问

ruby
# 多种语法
h = { "name" => "小明", "age" => 25 }   # 经典
h = { name: "小明", age: 25 }            # Symbol 键(推荐)
h = Hash.new(0)                           # 默认值 0

h[:name]         # "小明"
h[:city]         # nil(不存在)
h.fetch(:city, "未知")  # "未知"(安全取值)

操作

ruby
h = { a: 1, b: 2 }

h[:c] = 3         # 添加
h.delete(:b)      # 删除
h.merge({ d: 4 }) # 合并(返回新 Hash)
h.keys            # [:a, :c]
h.values          # [1, 3]
h.key?(:a)        # true
h.value?(1)       # true

# 遍历
h.each { |k, v| puts "#{k}: #{v}" }

默认值

ruby
# 默认值——访问不存在的 key 时返回
h = Hash.new(0)
h[:count] += 1   # 第一次 +1 从 0 开始
puts h[:count]   # 1

# ⚠️ 默认值用同一个对象时注意
h = Hash.new([])  # 所有缺失 key 共享同一个数组!