キリンめも(技術)

記事を書いています #rails #swift #JS #UE4 #unity

Rubyの会17回「メゾット/each/time/map/join  シンボル・ハッシュ ・p関数」

今日から夏休み!!!!!✨

 

今日の進捗です。 

f:id:geta206:20160811104817p:plain

 

agenda

  1. eachメゾット
  2. timeメゾット・mapメゾット
  3. &:
  4. joinメゾット
  5. ハッシュ {} とシンボル :hoge
  6.  p関数

 

1. eachメゾット

繰り返し処理を順に繰り返し全ての処理を行うためのメゾット

書き方が2通りあるよ!!(書いてある意味は同じです。)

 

コードの意味: 1から5までの数字を繰り返し2を i とかけたものを表示する

 

  •  (1..5)  範囲オブジェクトに対してeachメゾットを読んでいる。
  •   | i |          ブロックを操作するときには変数を指定しないといけない。 

                            i(ローカル変数)を使用してブロックを操作し代入する。

                     |i|(ブロック変数)の名前は なんでもおk。例 | hoge |

 

 1.一行でコードを書きたいとき

  ブロックを使うとき{}で囲まないといけないけど  do  end も使用できる。

>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5

 

2.2行以上のとき

>> (1..5).each do |i|
?>   puts 2 * i
>> end
2
4
6
8
10
=> 1..5

 

参考元  eachメソッド - Qiita

------------------------------------------------------------------------------

2. timeメゾット ・mapメゾット 

 

  •  timeメゾット 同じ内容を繰り返して表示  

  コードの意味: "Betelgeuse!"を3会表示させる

>> 3.times { puts "Betelgeuse!" }   # 3.timesではブロックに変数を使用していない
"Betelgeuse!"
"Betelgeuse!"
"Betelgeuse!"
=> 3

 

  • mapメゾット   配列、範囲オブジェクトを適応させる。

   {}の中身に適用させたい処理をかく。

>> (1..5).map { |i| i**2 }          # 「**」記法は冪乗 (べき乗) 
=> [1, 4, 9, 16, 25]
>> %w[a b c]                        # %w で文字列の配列を作成
=> ["a", "b", "c"] >> %w[a b c].map { |char| char.upcase } => ["A", "B", "C"] >> %w[A B C].map { |char| char.downcase } => ["a", "b", "c"]

 

 省略した書き方(上と構文は一緒)

>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
>> %w[A B C].map(&:downcase) => ["a", "b", "c"]

        &:  は char(範囲オブジェクト)を短縮するためのもの。 

 

------------------------------------------------------------------------------

5. joinメゾット

 文字列をまとめて表示する。

arr = ["hello", "world", 123]
puts arr.join(", ")
puts arr.join
hello, world, 123
helloworld123

 

 

参考引用 join (Array) - Rubyリファレンス

------------------------------------------------------------------------------

6. ハッシュ { }  と  シンボル :hoge

       ハッシュ{ }  配列を作る。

   注意 

  • 並び順は保証されない。
  • []とは別物。

 

>> user = {}                          # {}は空のハッシュ
=> {}
>> user["first_name"] = "Michael"     # キーが "first_name" で値が "Michael"
=> "Michael"
>> user["last_name"] = "Hartl"        # キーが "last_name" で値が "Hartl"
=> "Hartl"
>> user["first_name"]                 # 要素へのアクセスは配列の場合と似ている
=> "Michael"
>> user                               # ハッシュのリテラル表記
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}

 

 別の記述方法  こっちの方が簡単!

>> user = { "first_name" => "Michael", "last_name" => "Hartl" }
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}

 

シンボル : hoge     軽量な文字列。

   比較してみましょう。

>> "name".split('')
=> ["n", "a", "m", "e"]

 

  注意 

  • -(ハイフン)は使用できない  _(アンダーバー)は使用できます。
  • 数字が使えない
NoMethodError: undefined method `split' for :name:Symbol
>> "foobar".reverse
=> "raboof"
>> :foobar.reverse
NoMethodError: undefined method `reverse' for :foobar:Symbol        

 

------------------------------------------------------------------------------

7. p 関数

p関数    

  • 引く数の内容を文字列と数値を使い改行と順番に主力。
  •  .inspect  と意味はほぼ同じ

   要はそのまま表示してくれる。

p("Hello Ruby \n")
p(1234)
  #=>"Hello Ruby \n"
  #  1234

 

参考文献 【Ruby】表示メソッドについて(print,puts,p) - TASK NOTES

------------------------------------------------------------------------------

7. まとめ

 

  1. each    繰り返し処理をする。 (1..5).each
  2. time     回数表示 2.time
  3. map     値に要素を反映させる
  4. &:      変数を省略できる (&: hogehoge)
  5. join         要素を統合してひとつの文字列にする  
  6. ハッシュ {}              配列をつくる
  7. シンボル :hoge     軽量な変数
  8.  p関数   そのまま表示。

 

今日あった出来事

>> params = {}# 'params' というハッシュを定義 ('parameters' の略)
=> {}
>> params[:user] = { name: "Michael Hartl", email: "mhartl@example.com" }
=> {:name=>"Michael Hartl", :email=>"mhartl@example.com"}
>> params
=> {:user=>{:name=>"Michael Hartl", :email=>"mhartl@example.com"}}
>>  params[:user][:email]
=> "mhartl@example.com"

 

emailのデータを表示するコードが書かれれているのですが、

お題でnameはとれるかな…?と言われて

>>  params[:user]

ってかいたらとれると思っていたんだけど

結果

=> name=>"Michael Hartl", :email=>"mhartl@example.com"

で値を2つ取れてた。emailいらない…

・・・・

いろいろ試した結果

こうするとnameだけ値を取ることができる。

>>  params[:user][:name]

userの中のnameってことかと納得。PHPと取得の仕方一緒なのに・・

 

初心者脱却したい…( ;  ; )

 

今回の宿題

ハッシュとシンボルを覚えてくる。

------------------------------------------------------------------------------