建立雜湊

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}