Ruby创建一个哈希

示例

Ruby中的哈希是一个实现哈希表并将键映射到值的对象。Ruby支持一种特定的文字语法,用于使用以下方式定义哈希{}:

my_hash = {}  # an empty hash
grades = { 'Mark' => 15, 'Jimmy' => 10, 'Jack' => 10 }

也可以使用标准new方法创建哈希:

my_hash =Hash.new # 任何空哈希
my_hash = {}        # 任何空哈希

哈希可以具有任何类型的值,包括复杂类型,例如数组,对象和其他哈希:

mapping = { 'Mark' => 15, 'Jimmy' => [3,4], 'Nika' => {'a' => 3, 'b' => 5} }
mapping['Mark']   # => 15
mapping['Jimmy']  # => [3, 4]
mapping['Nika']   # => {"a"=>3, "b"=>5}

同样,键可以是任何类型,包括复杂的键:

mapping = { 'Mark' => 15, 5 => 10, [1, 2] => 9 }
mapping['Mark']  # => 15
mapping[[1, 2]]  # => 9

符号通常用作哈希键,Ruby 1.9引入了一种新的语法,专门用于缩短此过程。以下哈希是等效的:

# 在所有Ruby版本上均有效
grades = { :Mark => 15, :Jimmy => 10, :Jack => 10 }
# 在Ruby版本1.9+中有效
grades = { Mark: 15, Jimmy: 10, Jack: 10 }

以下哈希值(在所有Ruby版本中均有效)不同,因为所有键都是字符串:

grades = { "Mark" => 15, "Jimmy" => 10, "Jack" => 10 }

虽然可以混合使用两种语法版本,但不建议使用以下内容。

mapping = { :length => 45, width: 10 }

在Ruby 2.2+中,存在一种用于使用符号键创建哈希的替代语法(如果符号包含空格,则最有用):

grades = { "Jimmy Choo": 10, :"Jack Sparrow": 10 }
# => { :"Jimmy Choo" => 10, :"Jack Sparrow" => 10}