Ruby with Hash2012/5/24 yoyogi.rb
Rubyのハッシュについて
自己紹介フリーエンジニアtwitter:@nysalorblog: http://blog.larus.jp/好きなメソッドはEnumerable#map
前座記号が色々出てきて混乱するという意見があったので
変数名まとめ
変数名まとめローカル変数
変数名まとめローカル変数ahogeunder_scorecamelCasems06
変数名まとめローカル変数ahoge              英数と_のみunder_score   一文字目は小文字camelCasems06
変数名まとめ
変数名まとめ
変数名まとめインスタンス変数
変数名まとめインスタンス変数@a@hoge@under_score@camelCase@ms06
変数名まとめインスタンス変数@a@hoge               @で始まる@under_score@camelCase@ms06
変数名まとめ
変数名まとめ
変数名まとめクラス変数
変数名まとめクラス変数@@a@@hoge@@under_score@@camelCase@@ms06
変数名まとめクラス変数@@a@@hoge                @@で始まる@@under_score   あまり使わない@@camelCase@@ms06
変数名まとめ
変数名まとめ
変数名まとめ定数
変数名まとめ定数AHogeUnder_scoreCamelCaseMS06
変数名まとめ定数AHoge              大文字で始まるUnder_score   変更しようとすると警告              (変更できないわけではない)CamelCaseMS06
変数名まとめ
ここから本題
ハッシュ?いわゆる連想配列Hashクラスで定義{}でくくる要素は何でもいい
ハッシュの例{“first” => 1, “second” => 2, “third” => 3}{first:1, second:2, third:3}{“integer” => 1, “string” => ”text”, :array => ...
ハッシュの例{“first” => 1, “second” => 2, “third” => 3}{first:1, second:2, third:3}   Ruby1.9以降{“integer” => 1, “string” => ”text”...
ハッシュの作り方
ハッシュの作り方空のハッシュ
ハッシュの作り方空のハッシュa = {}a = Hash.new
ハッシュの作り方
ハッシュの作り方中身の入ったハッシュ
ハッシュの作り方中身の入ったハッシュa = {“first” => 1, “second” => 2}a = Hash.new(1) #=> {}a = Hash[“first”, 1, “second”, 2]a = Hash[*array]
シンボル
シンボルシンボルをキーにすることが多い
シンボルシンボルをキーにすることが多い{:first => 1, :second => 2, :third => 3}{first:1, second:2, third:3}
シンボル?
シンボル?Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前を整数で管理しています。これは名前を直接文字列として処理するよりも 速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。シン...
シンボル?Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前を整数で管理しています。これは名前を直接文字列として処理するよりも 速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。シン...
シンボル?
シンボル?
シンボル?文字列の前に:を付ける
シンボル?文字列の前に:を付ける:a:hoge:under_score:CamelCase:ms06
シンボル?文字列の前に:を付ける:a:hoge               読みやすい:under_score   書き換えられない               ちょっと速い(かも知れない):CamelCase:ms06
シンボル?
ハッシュの使い方
ハッシュの使い方 # all versions 1.9.x only a = {:alpha => "a", :bravo => "b", :charlie => "c"} # 1.9.x only a = {alpha: "a", bravo...
要素の取り出し
要素の取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
要素の取り出し     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a[:alpha] #=> “a”a.fetch(:bravo) #=> “b”a.values #=> [“a”, ...
キーの取り出し
キーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
キーの取り出し     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.keys #=> [:alpha, :bravo, :charlie]
要素とキーの取り出し
要素とキーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
要素とキーの取り出し     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.first #=> [:alpha, “a”]a.assoc(:bravo) #=> [:bravo, “b”...
要素とキーの取り出し     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.first #=> [:alpha, “a”]a.assoc(:bravo) #=> [:bravo, “b”...
要素の追加・更新
要素の追加・更新 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
要素の追加・更新     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a[:delta] = “d”
ハッシュの評価
ハッシュの評価 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
ハッシュの評価    a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.has_key?(:bravo) #=> truea.empty? #=> false
ハッシュの検索
ハッシュの検索 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
ハッシュの検索     a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.select{|k, v| k == :alpha && v == “a”}
ハッシュのマージ
ハッシュのマージ a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}
ハッシュのマージ     a = {:alpha => "a", :bravo => "b", :charlie => "c"}     b = {:able => "A", :baker => "B", :charlie => "C"}a.m...
ハッシュのマージ     a = {:alpha => "a", :bravo => "b", :charlie => "c"}     b = {:able => "A", :baker => "B", :charlie => "C"}a.m...
ハッシュのマージ     a = {:alpha => "a", :bravo => "b", :charlie => "c"}     b = {:able => "A", :baker => "B", :charlie => "C"}a.m...
イテレーション
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v|  p k  p venda.each_pair do |k, v|  p k  p vend
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v|  p k          ブロック変数  p venda.each_pair do |k, v...
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v|  p k          ブロック変数  p venda.each_pair do |k, v...
イテレーション
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k|  p k  p a[k]enda.each_value do |v|  p vend
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k|  p k           ブロック変数  p a[k]enda.each_value do...
イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k|  p k           ブロック変数  p a[k]enda.each_value do...
応用編
応用編無名ハッシュを返すメソッド
応用編無名ハッシュを返すメソッドdef const_hash  {    eagle: 15,    falcon: 16,    hornet: 18,  }endconst_hash[:eagle] #=> 15
応用編無名ハッシュを返すメソッドdef const_hash       初期設定などに便利  {    eagle: 15,    falcon: 16,    hornet: 18,  }endconst_hash[:eagle] #=> 15
応用編無名ハッシュを返すメソッド
応用編無名ハッシュを返すメソッド
応用編無名ハッシュを返すメソッドconst_hash[:eagle]   = “15E”const_hash[:eagle]   #=> 15const_hash[:cobra]   = 17const_hash[:cobra]   #=> nil
応用編無名ハッシュを返すメソッドconst_hash[:eagle]   = “15E”const_hash[:eagle]   #=> 15const_hash[:cobra]   = 17const_hash[:cobra]   #=> n...
応用編
応用編
応用編引数にハッシュを取るメソッド
応用編引数にハッシュを取るメソッドdef args_by_hash(params = {})  options = {:tiger => 88, :panther => 75}.merge!(params)  p optionsendargs_...
Let’s Try!
Let’s Try!ハッシュの値を全てStringにする
Let’s Try!ハッシュの値を全てStringにするdata = {        showa: 1926,        meiji: 1868,        taisho: 1912,        heisei: 1989,  }#...
Let’s Try!
Let’s Try!
Let’s Try!ハッシュの値を全てStringにする
Let’s Try!ハッシュの値を全てStringにするdata = {        showa: 1926,        meiji: 1868,        taisho: 1912,        heisei: 1989,  }H...
Let’s Try!
Let’s Try!
Let’s Try!ハッシュを値でソートしてキーを返す
Let’s Try!ハッシュを値でソートしてキーを返すdata = {        showa: 1926,        meiji: 1868,        taisho: 1912,        heisei: 1989,  }# ...
Let’s Try!
Let’s Try!
Let’s Try!ハッシュを値でソートしてキーを返す
Let’s Try!ハッシュを値でソートしてキーを返すdata = {        showa: 1926,        meiji: 1868,        taisho: 1912,        heisei: 1989,  }da...
Let’s Try!
Let’s Try!
Let’s Try!二つの配列からハッシュを作成する
Let’s Try!二つの配列からハッシュを作成するarray_a = [:meiji, :taisho, :showa, :heisei]array_b = [1868, 1912, 1926, 1989]# => {:meiji => 18...
Let’s Try!
Let’s Try!
Let’s Try!二つの配列からハッシュを作成する
Let’s Try!二つの配列からハッシュを作成するarray_a = [:meiji, :taisho, :showa, :heisei]array_b = [1868, 1912, 1926, 1989]Hash[*array_a.map{...
Let’s Try!
Let’s Try!
Let’s Try!二つのハッシュをマージして値の大きい方だけを残す
Let’s Try!二つのハッシュをマージして値の大きい方だけを残すhash_a = {meiji: 45, taisho: 1926, showa: 64, :heisei => 2012}hash_b = {meiji: 1912, tai...
Let’s Try!
Let’s Try!
Let’s Try!二つのハッシュをマージして値の大きい方だけを残す
Let’s Try!二つのハッシュをマージして値の大きい方だけを残すhash_a = {meiji: 45, taisho: 1926, showa: 64, :heisei => 2012}hash_b = {meiji: 1912, tai...
Let’s Try!
まとめハッシュはちょっと扱いにくい配列を返すメソッドが多いキーはシンボルが無難
質疑応答
質疑応答if available?  Question.all.map(&:answer!)end
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Ruby with Hash

867 views
815 views

Published on

Rubyのハッシュについて

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
867
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Ruby with Hash

    1. 1. Ruby with Hash2012/5/24 yoyogi.rb
    2. 2. Rubyのハッシュについて
    3. 3. 自己紹介フリーエンジニアtwitter:@nysalorblog: http://blog.larus.jp/好きなメソッドはEnumerable#map
    4. 4. 前座記号が色々出てきて混乱するという意見があったので
    5. 5. 変数名まとめ
    6. 6. 変数名まとめローカル変数
    7. 7. 変数名まとめローカル変数ahogeunder_scorecamelCasems06
    8. 8. 変数名まとめローカル変数ahoge 英数と_のみunder_score 一文字目は小文字camelCasems06
    9. 9. 変数名まとめ
    10. 10. 変数名まとめ
    11. 11. 変数名まとめインスタンス変数
    12. 12. 変数名まとめインスタンス変数@a@hoge@under_score@camelCase@ms06
    13. 13. 変数名まとめインスタンス変数@a@hoge @で始まる@under_score@camelCase@ms06
    14. 14. 変数名まとめ
    15. 15. 変数名まとめ
    16. 16. 変数名まとめクラス変数
    17. 17. 変数名まとめクラス変数@@a@@hoge@@under_score@@camelCase@@ms06
    18. 18. 変数名まとめクラス変数@@a@@hoge @@で始まる@@under_score あまり使わない@@camelCase@@ms06
    19. 19. 変数名まとめ
    20. 20. 変数名まとめ
    21. 21. 変数名まとめ定数
    22. 22. 変数名まとめ定数AHogeUnder_scoreCamelCaseMS06
    23. 23. 変数名まとめ定数AHoge 大文字で始まるUnder_score 変更しようとすると警告 (変更できないわけではない)CamelCaseMS06
    24. 24. 変数名まとめ
    25. 25. ここから本題
    26. 26. ハッシュ?いわゆる連想配列Hashクラスで定義{}でくくる要素は何でもいい
    27. 27. ハッシュの例{“first” => 1, “second” => 2, “third” => 3}{first:1, second:2, third:3}{“integer” => 1, “string” => ”text”, :array => [1, 2, 3]}
    28. 28. ハッシュの例{“first” => 1, “second” => 2, “third” => 3}{first:1, second:2, third:3} Ruby1.9以降{“integer” => 1, “string” => ”text”, :array => [1, 2, 3]}
    29. 29. ハッシュの作り方
    30. 30. ハッシュの作り方空のハッシュ
    31. 31. ハッシュの作り方空のハッシュa = {}a = Hash.new
    32. 32. ハッシュの作り方
    33. 33. ハッシュの作り方中身の入ったハッシュ
    34. 34. ハッシュの作り方中身の入ったハッシュa = {“first” => 1, “second” => 2}a = Hash.new(1) #=> {}a = Hash[“first”, 1, “second”, 2]a = Hash[*array]
    35. 35. シンボル
    36. 36. シンボルシンボルをキーにすることが多い
    37. 37. シンボルシンボルをキーにすることが多い{:first => 1, :second => 2, :third => 3}{first:1, second:2, third:3}
    38. 38. シンボル?
    39. 39. シンボル?Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前を整数で管理しています。これは名前を直接文字列として処理するよりも 速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、両者を仲立ちするような存在です。
    40. 40. シンボル?Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前を整数で管理しています。これは名前を直接文字列として処理するよりも 速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、両者を仲立ちするような存在です。 from Rubyリファレンスマニュアル
    41. 41. シンボル?
    42. 42. シンボル?
    43. 43. シンボル?文字列の前に:を付ける
    44. 44. シンボル?文字列の前に:を付ける:a:hoge:under_score:CamelCase:ms06
    45. 45. シンボル?文字列の前に:を付ける:a:hoge 読みやすい:under_score 書き換えられない ちょっと速い(かも知れない):CamelCase:ms06
    46. 46. シンボル?
    47. 47. ハッシュの使い方
    48. 48. ハッシュの使い方 # all versions 1.9.x only a = {:alpha => "a", :bravo => "b", :charlie => "c"} # 1.9.x only a = {alpha: "a", bravo: "b", charlie: "c"}
    49. 49. 要素の取り出し
    50. 50. 要素の取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    51. 51. 要素の取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}a[:alpha] #=> “a”a.fetch(:bravo) #=> “b”a.values #=> [“a”, “b”, “c”]
    52. 52. キーの取り出し
    53. 53. キーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    54. 54. キーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.keys #=> [:alpha, :bravo, :charlie]
    55. 55. 要素とキーの取り出し
    56. 56. 要素とキーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    57. 57. 要素とキーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.first #=> [:alpha, “a”]a.assoc(:bravo) #=> [:bravo, “b”]a.shift #=> [:alpha, “a”]a.to_a #=> [[:alpha, “a”], [:bravo, “b”], [:charlie, “c”]]
    58. 58. 要素とキーの取り出し a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.first #=> [:alpha, “a”]a.assoc(:bravo) #=> [:bravo, “b”]a.shift #=> [:alpha, “a”] 要素が削除されるa.to_a #=> [[:alpha, “a”], [:bravo, “b”], [:charlie, “c”]]
    59. 59. 要素の追加・更新
    60. 60. 要素の追加・更新 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    61. 61. 要素の追加・更新 a = {:alpha => "a", :bravo => "b", :charlie => "c"}a[:delta] = “d”
    62. 62. ハッシュの評価
    63. 63. ハッシュの評価 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    64. 64. ハッシュの評価 a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.has_key?(:bravo) #=> truea.empty? #=> false
    65. 65. ハッシュの検索
    66. 66. ハッシュの検索 a = {:alpha => "a", :bravo => "b", :charlie => "c"}
    67. 67. ハッシュの検索 a = {:alpha => "a", :bravo => "b", :charlie => "c"}a.select{|k, v| k == :alpha && v == “a”}
    68. 68. ハッシュのマージ
    69. 69. ハッシュのマージ a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}
    70. 70. ハッシュのマージ a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}a.merge(b)a.merge!(b)a.update(b)a.merge({:charlie => “C”, :delta => “d”})a.merge(b){|k, a, b| a + b}
    71. 71. ハッシュのマージ a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}a.merge(b)a.merge!(b) 破壊的メソッドa.update(b)a.merge({:charlie => “C”, :delta => “d”})a.merge(b){|k, a, b| a + b}
    72. 72. ハッシュのマージ a = {:alpha => "a", :bravo => "b", :charlie => "c"} b = {:able => "A", :baker => "B", :charlie => "C"}a.merge(b)a.merge!(b) 破壊的メソッドa.update(b) 破壊的メソッドa.merge({:charlie => “C”, :delta => “d”})a.merge(b){|k, a, b| a + b}
    73. 73. イテレーション
    74. 74. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v| p k p venda.each_pair do |k, v| p k p vend
    75. 75. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v| p k ブロック変数 p venda.each_pair do |k, v| p k p vend
    76. 76. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each do |k, v| p k ブロック変数 p venda.each_pair do |k, v| p k ブロック変数 p vend
    77. 77. イテレーション
    78. 78. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k| p k p a[k]enda.each_value do |v| p vend
    79. 79. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k| p k ブロック変数 p a[k]enda.each_value do |v| p vend
    80. 80. イテレーションa = {:alpha => "a", :bravo => "b", :charlie =>"c"}a.each_key do |k| p k ブロック変数 p a[k]enda.each_value do |v| p v ブロック変数end
    81. 81. 応用編
    82. 82. 応用編無名ハッシュを返すメソッド
    83. 83. 応用編無名ハッシュを返すメソッドdef const_hash { eagle: 15, falcon: 16, hornet: 18, }endconst_hash[:eagle] #=> 15
    84. 84. 応用編無名ハッシュを返すメソッドdef const_hash 初期設定などに便利 { eagle: 15, falcon: 16, hornet: 18, }endconst_hash[:eagle] #=> 15
    85. 85. 応用編無名ハッシュを返すメソッド
    86. 86. 応用編無名ハッシュを返すメソッド
    87. 87. 応用編無名ハッシュを返すメソッドconst_hash[:eagle] = “15E”const_hash[:eagle] #=> 15const_hash[:cobra] = 17const_hash[:cobra] #=> nil
    88. 88. 応用編無名ハッシュを返すメソッドconst_hash[:eagle] = “15E”const_hash[:eagle] #=> 15const_hash[:cobra] = 17const_hash[:cobra] #=> nil 呼び出すたびに初期値が返る
    89. 89. 応用編
    90. 90. 応用編
    91. 91. 応用編引数にハッシュを取るメソッド
    92. 92. 応用編引数にハッシュを取るメソッドdef args_by_hash(params = {}) options = {:tiger => 88, :panther => 75}.merge!(params) p optionsendargs_by_hash(mouse: 128)#=> {:tiger => 88, :panther => 75, :mouse => 128}args_by_hash(:tiger => 128, :panther => 88, :long=> 75)#=> {:tiger => 128, :panther => 88, :lang => 75}
    93. 93. Let’s Try!
    94. 94. Let’s Try!ハッシュの値を全てStringにする
    95. 95. Let’s Try!ハッシュの値を全てStringにするdata = { showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, }# => {:showa => “1926”, :meiji => “1868”,...}
    96. 96. Let’s Try!
    97. 97. Let’s Try!
    98. 98. Let’s Try!ハッシュの値を全てStringにする
    99. 99. Let’s Try!ハッシュの値を全てStringにするdata = { showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, }Hash[*data.to_a.map{|x| [x.first, x.last.to_s]}]# => {:showa => “1926”, :meiji => “1868”,...}
    100. 100. Let’s Try!
    101. 101. Let’s Try!
    102. 102. Let’s Try!ハッシュを値でソートしてキーを返す
    103. 103. Let’s Try!ハッシュを値でソートしてキーを返すdata = { showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, }# => [:meiji, :taisho, :showa, :heisei]
    104. 104. Let’s Try!
    105. 105. Let’s Try!
    106. 106. Let’s Try!ハッシュを値でソートしてキーを返す
    107. 107. Let’s Try!ハッシュを値でソートしてキーを返すdata = { showa: 1926, meiji: 1868, taisho: 1912, heisei: 1989, }data.invert.sort.map{|x| x.last}# => [:meiji, :taisho, :showa, :heisei]
    108. 108. Let’s Try!
    109. 109. Let’s Try!
    110. 110. Let’s Try!二つの配列からハッシュを作成する
    111. 111. Let’s Try!二つの配列からハッシュを作成するarray_a = [:meiji, :taisho, :showa, :heisei]array_b = [1868, 1912, 1926, 1989]# => {:meiji => 1868, :taisho => 1912,...}
    112. 112. Let’s Try!
    113. 113. Let’s Try!
    114. 114. Let’s Try!二つの配列からハッシュを作成する
    115. 115. Let’s Try!二つの配列からハッシュを作成するarray_a = [:meiji, :taisho, :showa, :heisei]array_b = [1868, 1912, 1926, 1989]Hash[*array_a.map{ |x| [x, array_b[array_a.index(x)]] }.flatten]# => {:meiji => 1868, :taisho => 1912,...}
    116. 116. Let’s Try!
    117. 117. Let’s Try!
    118. 118. Let’s Try!二つのハッシュをマージして値の大きい方だけを残す
    119. 119. Let’s Try!二つのハッシュをマージして値の大きい方だけを残すhash_a = {meiji: 45, taisho: 1926, showa: 64, :heisei => 2012}hash_b = {meiji: 1912, taisho: 15, showa: 1989, :heisei => 24}# => {:meiji => 1912, :taisho => 1926,...}
    120. 120. Let’s Try!
    121. 121. Let’s Try!
    122. 122. Let’s Try!二つのハッシュをマージして値の大きい方だけを残す
    123. 123. Let’s Try!二つのハッシュをマージして値の大きい方だけを残すhash_a = {meiji: 45, taisho: 1926, showa: 64, :heisei => 2012}hash_b = {meiji: 1912, taisho: 15, showa: 1989, :heisei => 24}hash_a.merge(hash_b){|k,a,b| [a,b].sort.last}# => {:meiji => 1912, :taisho => 1926,...}
    124. 124. Let’s Try!
    125. 125. まとめハッシュはちょっと扱いにくい配列を返すメソッドが多いキーはシンボルが無難
    126. 126. 質疑応答
    127. 127. 質疑応答if available?  Question.all.map(&:answer!)end
    128. 128. ご清聴ありがとうございました

    ×