\u5982\u679c key \u662f Symbol\uff0c\u5247\u53ef\u4ee5\u5c07 :[symbol_name] => value \u7c21\u5316\u6210 [symbol_name]: value<\/li><\/ul>\n\n\n\n\u56e0\u70ba Symbol \u7684\u6548\u80fd\u8f03 String \u4f86\u5f97\u512a\u7570\uff0c\u56e0\u6b64\u5e38\u7528\u4f86\u4f5c\u70ba Hash \u7684 keys<\/pre>\n\n\n\nh1 = {:name => \"Jimmy\", :name => \"Sam\"}\n# warning: key :name is duplicated and overwritten on line 1\n\nh1 = {\"name\" => \"Jimmy\", :age => 25, :weight => 25}\n# ok\n\nh1 = {:name => \"Jimmy\", :age => 25}\nh2 = {name: \"Jimmy\", age: 25}\n\np h1\n# {:name => \"Jimmy\", :age => 25}\np h2\n# {:name=>\"Jimmy\", :age=>25}\np h1 == h2\n# true<\/code><\/pre>\n\n\n\n<\/span>1.1 Hash.new<\/span><\/h3>\n\n\n\n\u53ef\u4ee5\u7528 Hash.new \u5ba3\u544a\u7a7a\u7684 Hash object\uff0c\u6709\u7d66 argument \u6642\uff0c\u5247\u6307\u5b9a\u4e0d\u5b58\u5728 key \u7684 value \u6642\u8981\u56de\u50b3\u4ec0\u9ebc\u6771\u897f\uff1a<\/p>\n\n\n\n
h1 = Hash.new\n\np h1\n# {}\np h1[:name]\n# nil\n\nh2 = Hash.new(false)\n\np h2\n# {}\np h2[:name]\n# false<\/code><\/pre>\n\n\n\n<\/span>1.2 Hash<\/span><\/h3>\n\n\n\n\u53ef\u4ee5\u7528 Hash \u76f4\u63a5\u5ba3\u544a\u65b0\u7684 Hash object\uff1a<\/p>\n\n\n\n
h1 = Hash[]\n\np h1\n# {}\n\nh2 = Hash[[[:name, \"Jimmy\"], [:age, 25]]]\nh3 = Hash[:name, \"Jimmy\", :age, 25]\nh4 = {:name => \"Jimmy\", :age => 25}\nh5 = {name: \"Jimmy\", age: 25}\np h2, h3, h4, h5\n# {:name=>\"Jimmy\", :age=>25}\n\nh6 = Hash[h5]\n\np h5\n# {:name=>\"Jimmy\", :age=>25}\np h6\n# {:name=>\"Jimmy\", :age=>25}\np h5.object_id\n# 60\np h6.object_id\n# 80\n<\/code><\/pre>\n\n\n\n<\/span>2. Hash Instance Methods I – \u5c6c\u6027<\/span><\/h2>\n\n\n\n<\/span>2.1 Hash []<\/span><\/h3>\n\n\n\n\u53ef\u4ee5\u7528 .[] \u5f8c\u9762\u52a0 argument \u4f86\u53d6\u5f97 key \u5c0d\u61c9\u7684 vlaue\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25}\n\np h1.[](:name)\n# \"Jimmy\"\np h1[:name]\n# \"Jimmy\"<\/code><\/pre>\n\n\n\n<\/span>2.2 Hash fetch<\/span><\/h3>\n\n\n\n.fetch \u548c\u7528 [] \u76f4\u63a5\u5b58\u53d6 value \u985e\u4f3c\uff0c\u5dee\u5225\u5728\u65bc\u5982\u679c\u6c92\u6709\u9019\u500b key \u7684\u8a71\u53ef\u4ee5\u6307\u5b9a\u8981\u56de\u50b3\u4ec0\u9ebc\u503c\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25}\n\np h1[:name]\n# \"Jimmy\"\np h1.fetch(:name)\n# \"Jimmy\"\n\np h1[:address]\n# nil\np h1.fetch(:address)\n# Error! `fetch': key not found: :address\np h1.fetch(:address, \"Key not exists\")\n# Key not exists<\/code><\/pre>\n\n\n\n<\/span>2.5 Hash length\/size<\/span><\/h3>\n\n\n\n\u7528\u4f86\u56de\u50b3\u6709\u5e7e\u500b key-value pairs\uff0c\u548c .size \u7684\u529f\u7528\u4e00\u6a23\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25}\n\np h1.length\np h1.size<\/code><\/pre>\n\n\n\n<\/span>2.6 Hash keys<\/span><\/h3>\n\n\n\n\u5c07\u9019\u500b Hash object \u7684\u6240\u6709 key \u653e\u5230\u4e00\u500b Array object \u5f8c\u56de\u50b3\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\np h1.keys\n# [:name, :age, :city]<\/code><\/pre>\n\n\n\n<\/span>2.7 Hash values<\/span><\/h3>\n\n\n\n\u5c07\u9019\u500b Hash object \u7684\u6240\u6709 value \u653e\u5230\u4e00\u500b Array object \u5f8c\u56de\u50b3\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\np h1.values\n# [\"Jimmy\", 25, \"Taipei\"]<\/code><\/pre>\n\n\n\n<\/span>2.8 Hash default<\/span><\/h3>\n\n\n\n\u53ef\u4ee5\u7528\u4f86\u6307\u5b9a\u7576\u5b58\u53d6\u6c92\u6709\u7684 key \u6642\u8981\u56de\u50b3\u4ec0\u9ebc value\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\nh1.default = \"cannot find the key\"\np h1[:address]\n# \"cannot find the key\"<\/code><\/pre>\n\n\n\n<\/span>2.9 Hash key?<\/span><\/h3>\n\n\n\n\u7528\u4f86\u5224\u65b7\u9019\u500b Hash object \u662f\u5426\u6709\u67d0\u500b key\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\np h1.key?(:name)\n# true\np h1.key?(:address)\n# false<\/code><\/pre>\n\n\n\n<\/span>2.10 Hash value?<\/span><\/h3>\n\n\n\n\u7528\u4f86\u5224\u65b7\u9019\u500b Hash object \u662f\u5426\u6709\u67d0\u500b value\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\np h1.value?(\"Jimmy\")\n# true\np h1.value?(30)\n# false<\/code><\/pre>\n\n\n\n<\/span>3. Hash Instance Methods II \u2013 \u64cd\u4f5c (\u4e0d\u6539\u8b8a\u539f Object)<\/span><\/h2>\n\n\n\n<\/span>3.1 Hash merge<\/span><\/h3>\n\n\n\n\u6703\u5408\u4f75\u5169\u500b Hash object\uff0c\u5982\u679c\u6709\u91cd\u8907\u7684 key\uff0c\u6703\u4ee5 argument \u4e2d\u7684 Hash object \u7684 value \u70ba\u4e3b\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\nh2 = {address: \"Xinyi Road\"}\nh3 = {name: \"Sam\", age: 30, city: \"Taoyuan\"}\n\np h1.merge(h2)\n# {:name=>\"Jimmy\", :age=>25, :city=>\"Taipei\", :address=>\"Xinyi Road\"}\np h1.merge(h3)\n# {:name=>\"Sam\", :age=>30, :city=>\"Taoyuan\"}\np h1\n# {:name=>\"Jimmy\", :age=>25, :city=>\"Taipei\"}<\/code><\/pre>\n\n\n\n<\/span>3.2 Hash to_a<\/span><\/h3>\n\n\n\n\u5c07 Hash object \u8f49\u63db\u6210\u4e8c\u7dad\u9663\u5217\u5f8c\u56de\u50b3\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25, city: \"Taipei\"}\n\np h1.to_a\n# [[:name, \"Jimmy\"], [:age, 25], [:city, \"Taipei\"]]<\/code><\/pre>\n\n\n\n<\/span>4. Hash Instance Methods II \u2013 \u64cd\u4f5c (\u6703\u6539\u8b8a\u539f Object)<\/span><\/h2>\n\n\n\n<\/span>4.1 Add key value pair in Hash Object<\/span><\/h3>\n\n\n\n\u76f4\u63a5\u7528 [] \u8ce6\u503c\u5373\u53ef\u5728 Hash object \u65b0\u589e key-value pair\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25}\n\nh1[:address] = \"Taipei\"\np h1\n# {:name=>\"Jimmy\", :age=>25, :address=>\"Taipei\"}<\/code><\/pre>\n\n\n\n<\/span>4.2 Hash store<\/span><\/h3>\n\n\n\n.store \u548c\u4e0a\u8ff0\u65b9\u6cd5\u4e00\u6a23\uff0c\u53ef\u4ee5\u5728 Hash object \u65b0\u589e key-value pair\uff0c\u9019\u500b method \u4e00\u6b21\u53ea\u80fd\u65b0\u589e\u4e00\u500b key-value pair\uff0c\u5982\u679c\u7d66\u8d85\u904e 2 \u500b arguments \u6703\u5831\u932f\uff1a<\/p>\n\n\n\n
h1 = {name: \"Jimmy\", age: 25}\n\nh1.store(:address, \"Taipei\")\np h1\n# {:name=>\"Jimmy\", :age=>25, :address=>\"Taipei\"}\n\nh1.store(:country, \"Taiwan\", :height, 183)\np h1\n# Error! `store': wrong number of arguments (given 4, expected 2)<\/code><\/pre>\n\n\n\n