Ruby超入門 2周目 CHAPTER 6-1 オブジェクトを組で扱う まで

f:id:kkouji0224:20191025224143p:plain

 

『ゼロからわかる Ruby 超入門 (かんたんIT基礎講座) 』
github.com

 ※上の画像はRuby超入門に出てくるハッシュオブジェクトさん

はーい豪雨でしたね。そして寒いのでこんな時間に珍しくコーヒー飲んでます。

こんばんは。koujiです。

 

今日はCHAPTER 6のハッシュのところを振り返っていきたいと思いまっす!

 

{:coffee => 300:caffe_latte => 400}

 

上がハッシュ。配列と同じように複数のオブジェクトをまとめることができるんだけど、配列との違いは、キーと値のセットで扱えるって感じ。配列もオブジェクトだったようにハッシュもオブジェクト!配列はArrayオブジェクトで、ハッシュはHashオブジェクトだね。ハッシュのキーと値にはどんなオブジェクト書けちゃう。ちなみに => これはハッシュロケットって言うらしい。なんかやんちゃな名前。

 

で、ハッシュをそのままpメソッドに渡そうとするとエラーになっちゃうみたいなので試してみたら下のエラーになちゃった。

 

syntax error, unexpected =>, expecting '}'
p {:coffee => 300, :caffe_latte => 400}

 

予期しないシンタックスエラーって感じなのかな。()でハッシュを囲んであげるとこのエラーがでなくなるので忘れないようにしないとね。

 

Symbolオブジェクト

{:coffee => 300:caffe_latte => 400}

 

上のハッシュの「:coffee」と「:caffe_latte」がシンボルオブジェクト

シンボルは文字列と似てるオブジェクトで、配列のときはダブルクォーテーションで囲ってたけど、ハッシュでは先頭に:(コロン)をつけて書いてあげるようにする。

 

で、このシンボルオブジェクトはメソッドで文字列にできたり、逆に文字列をシンボルにできちゃったりする。

 

p "samusugiru".to_sym #=> :samusugiru
p :samusugiru.to_s #=> "samusugiru"

 

こんな感じね。.to_symと.to_sだね!

 

ハッシュの書き方は2種類ある

①{:coffee => 300:caffe_latte => 400} #コロンが先頭でハッシュロケットを使う
②{coffee: 300caffe_latte: 400} #コロンが後でハッシュロケットなしで値を書く

 

②の方が直感的にわかるので主流な書き方っぽい!

で、コロンが後ろにきた書き方なんだけど、pメソッドに渡してあげると…

コロンが先頭にきてハッシュロケット使ったものが端末に表示されるから面白い。

 

ハッシュを変数に代入

menu = {:coffee => 300:caffe_latte => 400}
p menu

 

ハッシュも変数に代入できまーす!ハッシュに名札をつけるイメージとのこと。代入っていうと、なんか入れてあげる感じだけど、どうやらそうじゃなくて名札とかラベルをつけてあげるイメージらしいんだよね。この辺ちょっとよくわかんないんだけど、そのうち調べてみようかなって感じです。

 

ハッシュから値を取得する

menu = {:coffee => 300:caffe_latte => 400}
p menu[:coffee]

 

これも簡単で、変数名[シンボルオブジェクト]って感じだね。この場合だと変数名menuにシンボルの:coffeeにしてあげると値の300が取得できるって感じ。シンボルは先頭に:コロンをつける!

 

で、COLUMNに配列が入ってるハッシュってのが紹介されてて面白かったんだよね。

 

{title: "Ruby Book"members: ["yano""beco"]}

 

こんな感じのハッシュが書かれてたんだけど、上の値の取得で配列を取得して、以前教えてもらった.mapとかいけるんでは?と思ってやってみたの。こんな感じ。

 

menu = {title: "Ruby Book"members: ["yano""beco"]}
members = menu[:members].map { |x|  x.upcase }
p members #=> ["YANO", "BECO"]

 

とりあえずハッシュを変数menuに代入したら、うえでやったようにmenu[:members]で配列を取得して、.mapで変数xに配列を一個ずつ入れると文字列オブジェクとになるので、それに.upcaseで大文字にしてあげて変数membersにみたいな感じ。ちゃんと大文字になって感動ですよ!!ねー。面白いよねー。こういうの面白いよ!

 

 

てか、CHAPTER 6の分の振り返りを一回で終わらせようと思ったけど、疲れてきたので分割するよっ!苦行になってもしかたないしね…

 

そんな感じで続きは明日!