Ruby 哈希(Hash)学习笔记

哈希(Hash)是 Ruby 中一种非常有用的数据类型,它提供了一种简单快捷的方式来存储和访问 key-value (键值对) 对象。

创建哈希

可以通过以下两种方式来创建哈希:

直接定义

rubyCopy Code
# 创建一个哈希并赋值给变量 person person = {"name" => "张三", "age" => 20, "gender" => "男"} # 访问哈希中的值 puts person["name"] # 输出:张三 puts person["age"] # 输出:20 # 更新哈希中的值 person["age"] = 25 # 添加新的键值对 person["address"] = "北京市" # 删除键值对 person.delete("gender")

使用 Hash 类的 new 方法

rubyCopy Code
# 创建一个空的哈希并赋值给变量 scores scores = Hash.new # 添加键值对 scores["小明"] = 90 scores["小红"] = 85 # 访问哈希中的值 puts scores["小明"] # 输出:90 puts scores["小红"] # 输出:85

迭代哈希

使用 each 方法可以对哈希进行迭代,以便访问每个键值对。

rubyCopy Code
# 定义一个哈希 fruit_prices = {"苹果" => 3.0, "香蕉" => 2.5, "橙子" => 4.0} # 迭代哈希并输出每个键值对 fruit_prices.each do |fruit, price| puts "#{fruit} 的价格为 #{price} 元" end

哈希的默认值

可以通过 Hash 类的 new 方法来设置哈希的默认值,这样当访问哈希中不存在的键时将返回默认值,而不是 nil。

rubyCopy Code
# 定义一个带有默认值的哈希 grades = Hash.new(0) # 更新哈希中的值 grades["小明"] = 90 grades["小红"] = 85 # 访问哈希中不存在的键 puts grades["小刚"] # 输出:0

哈希的常用方法

  • sizelength: 返回哈希中键值对的数量
  • keys: 返回哈希中所有的键
  • values: 返回哈希中所有的值
  • has_key?key?: 检查哈希中是否有指定的键
  • has_value?value?: 检查哈希中是否有指定的值

示例

下面是使用哈希来存储和操作学生信息的示例:

rubyCopy Code
# 创建一个带有默认值的哈希 students = Hash.new { |hash, key| hash[key] = {} } # 添加学生信息 students["小明"]["年龄"] = 12 students["小明"]["语文成绩"] = 90 students["小明"]["数学成绩"] = 85 # 迭代所有学生 students.each do |name, info| puts "姓名:#{name}" puts "年龄:#{info['年龄']}" puts "语文成绩:#{info['语文成绩']}" puts "数学成绩:#{info['数学成绩']}" puts '-' * 20 end

输出:

Copy Code
姓名:小明 年龄:12 语文成绩:90 数学成绩:85 --------------------