创建哈希
Ruby 中的哈希是一个实现哈希表的对象,将键映射到值。Ruby 支持使用 {}
定义哈希的特定文字语法:
my_hash = {} # an empty hash
grades = { 'Mark' => 15, 'Jimmy' => 10, 'Jack' => 10 }
也可以使用标准 new
方法创建哈希:
my_hash = Hash.new # any empty hash
my_hash = {} # any empty 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 引入了一种新的语法,专门用于缩短此过程。以下哈希值相当于:
# Valid on all Ruby versions
grades = { :Mark => 15, :Jimmy => 10, :Jack => 10 }
# Valid in Ruby version 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}