概要
Rubyのハッシュについて。
宣言と取得
下記の構文でハッシュを宣言出来ます。
変数名 = {"key1" => value1,"key2" => value2,・・・} 変数名 = Hash["key1" => value1,"key2" => value2,・・・]
下記の構文で値の取得ができます。
変数名["key1"] 変数名.fetch("key1")
追加
以下の構文でハッシュに要素を追加できます。
変数名["new_key"] = new_value 変数名.store("new_key") = new_value
サイズの取得
下記の構文でサイズの取得が出来ます
変数名.length 変数名.size
ハッシュのループ
keyとvalueのループ
変数名.each{|key,value|処理}
keyのループ
変数名.each_key{|key|処理}
valueのループ
変数名.each_value{|value|処理}
配列に変換
keyの配列に変換
変数名.keys
valueの配列に変換
変数名.values
配列に変換
変数名.to_a
サンプルコード
※人数に深い意味はありません
lang_population1 = {"Java" => 5000, "Ruby" => 10000000, "Dart" => 3} lang_population2 = Hash["Java" => 5000, "Ruby" => 10000000, "Dart" => 3] JAVA = "Java" RUBY = "Ruby" DART = "Dart" puts "#{JAVA}の言語人口は#{lang_population1[JAVA]}人" puts "#{RUBY}の言語人口は#{lang_population1[RUBY]}人" puts "#{DART}の言語人口は#{lang_population1[DART]}人" puts "#{JAVA}の言語人口は#{lang_population2.fetch(JAVA)}人" puts "#{JAVA}の言語人口は#{lang_population2.fetch(RUBY)}人" puts "#{JAVA}の言語人口は#{lang_population2.fetch(DART)}人" C = "C" VB = "VB" lang_population1[C] = 1000 lang_population1.store(VB,1) puts "#{C}の言語人口は#{lang_population1[C]}人" puts "#{VB}の言語人口は#{lang_population1[VB]}人" puts "現在の言語数は#{lang_population1.length}(length)" puts "現在の言語数は#{lang_population1.size}(size)" puts "------------------------------------------------" lang_population1.each{|key,value|puts "#{key}の言語人口は#{value}人"} puts "------------------------------------------------" lang_population1.each_key{|key|puts "#{key}の言語"} puts "------------------------------------------------" lang_population1.each_value{|value|puts "#{value}人"} puts "------------------------------------------------" keys = lang_population1.keys keys.each{|key| puts "key=#{key}" } puts "------------------------------------------------" values = lang_population1.values values.each{|value| puts "value=#{value}" } puts "------------------------------------------------" hash_list = lang_population1.to_a hash_list.each{|list| puts "list=#{list}" }
出力
Javaの言語人口は5000人 Rubyの言語人口は10000000人 Dartの言語人口は3人 Javaの言語人口は5000人 Javaの言語人口は10000000人 Javaの言語人口は3人 Cの言語人口は1000人 VBの言語人口は1人 現在の言語数は5(length) 現在の言語数は5(size) ------------------------------------------------ Javaの言語人口は5000人 Rubyの言語人口は10000000人 Dartの言語人口は3人 Cの言語人口は1000人 VBの言語人口は1人 ------------------------------------------------ Javaの言語 Rubyの言語 Dartの言語 Cの言語 VBの言語 ------------------------------------------------ 5000人 10000000人 3人 1000人 1人 ------------------------------------------------ key=Java key=Ruby key=Dart key=C key=VB ------------------------------------------------ value=5000 value=10000000 value=3 value=1000 value=1 ------------------------------------------------ list=["Java", 5000] list=["Ruby", 10000000] list=["Dart", 3] list=["C", 1000] list=["VB", 1]