📜  Ruby哈希(1)

📅  最后修改于: 2023-12-03 15:19:52.719000             🧑  作者: Mango

Ruby哈希

Ruby哈希是一种重要的数据结构,它允许程序员以键值对的方式存储和访问数据。在Ruby中,哈希被称为Hash,并且它是内置的核心类之一。

创建哈希

要创建一个哈希,可以使用字面量语法或Hash类的构造函数。以下是一些示例:

使用字面量语法
# 创建空哈希
empty_hash = {}

# 创建包含键值对的哈希
person = { name: "John", age: 30, city: "New York" }

# 创建哈希时可以使用任意类型的键和值
mixed_hash = { 1 => "one", "two" => 2.0, true => "yes" }
使用构造函数
# 创建空哈希
empty_hash = Hash.new

# 创建包含默认值的哈希
default_hash = Hash.new(0) # 默认值为0

# 创建哈希时添加键值对
person = Hash.new
person[:name] = "John"
person[:age] = 30
person[:city] = "New York"
访问哈希

可以使用键来访问哈希中的值。Ruby提供了几种访问哈希的方式:

# 使用方括号和键来访问值
person[:name] #=> "John"
person[:age] #=> 30

# 使用fetch方法和键来访问值,可以提供一个默认值
person.fetch(:city, "Unknown") #=> "New York"
person.fetch(:gender, "Unknown") #=> "Unknown"

# 通过遍历哈希的键值对来访问所有值
person.each do |key, value|
  puts "#{key}: #{value}"
end
修改哈希

可以通过多种方式修改哈希中的键值对:

# 添加新的键值对
person[:occupation] = "Developer"

# 修改现有键的值
person[:age] = 31

# 删除键值对
person.delete(:city)
哈希的常见操作

Ruby提供了许多方法来对哈希进行常见的操作,例如计数、合并、排序等。

计数
fruits = { apple: 3, banana: 2, orange: 1 }

# 获取哈希中的键的数量
fruits.length #=> 3

# 检查哈希是否为空
fruits.empty? #=> false

# 计算哈希中值的总和
total = fruits.values.sum

# 计算哈希中值的最大值和最小值
max_value = fruits.values.max
min_value = fruits.values.min
合并
hash1 = { a: 1, b: 2 }
hash2 = { b: 3, c: 4 }

# 使用merge方法合并哈希,新建一个新的哈希,不改变原始哈希
merged_hash = hash1.merge(hash2) #=> { a: 1, b: 3, c: 4 }

# 使用merge!方法合并哈希,修改原始哈希
hash1.merge!(hash2)
排序
scores = { alice: 90, bob: 80, charlie: 95 }

# 按键进行升序排序
sorted_hash = scores.sort.to_h

# 按值进行降序排序
sorted_hash = scores.sort_by { |_, value| -value }.to_h

以上是一些Ruby哈希的基本知识和操作示例。哈希在Ruby中有广泛的应用,可以帮助程序员高效地存储和检索数据。