Ruby / Ruby on Railsビギナーズ倶楽部
Rubyを楽しくする第⼀歩!
ブロックを理解する!
2016.11.23
Self-Intoroduction
徳島県出⾝です
(o´∀`o) ⼀緒に勉強しましょう( ´ ▽ ` )ノ
勉強会やってます!
アウトプットを主軸においた、勉強会を運営しています:)
Click
エンジニア(Rails/Swift/AWS/Linux)
全国書店販売中!
~Swiftではじめるプログラミングの第⼀歩~
これからつくるiPhoneアプリ開発⼊⾨
[ Swift3 &Xcode8対応 ]
Swiftビギナーズ倶楽部から⽣まれた!
https://swiftbg.github.io/swiftbook/
書籍公式サイト
応⽤編
アプリリリース編
サンプルアプリ
Tips公開
Engineer@Life is Tech !
1)ブロック(block)の基本
Today's Agenda
3)便利なEnumerable モジュール
2)ブロックの利⽤応⽤編
ブロック😤
Ruby初学者のつまずきポイント
ブロックを制覇できると、
Rubyの扉はひらける・・・おそらく:)
1)ブロック(block)の基本
ブロックとは・・・
[1, 2, 3].each do |i|
puts i ** 2
end こんな処理
1)ブロック(block)の基本
メソッド呼び出し実⾏時に、
引数と併せて処理の
塊を渡すことができる。
1)ブロック(block)の基本
メソッド呼び出し実⾏時に、
引数と併せて処理の塊を渡すことができる。
[1, 2, 3].each do |i|
puts i ** 2
end メソッド呼び出し
ブロックパラメータ
ブロック変数
1)ブロック(block)の基本
書き⽅は、2つあって、
こんな書き⽅も出来る。
[1, 2, 3].each {|i| puts i ** 2}
実⾏結果 => 1, 4, 9
1)ブロック(block)の基本
処理は、どちらも同じで、
1, 4, 9 が出⼒されます。
[1, 2, 3].each {|i| puts i ** 2}
2)ブロックを利⽤した便利メソッド
eachは、ブロックで
処理を実⾏するだけ。
処理結果を戻り値として
受け取りたい場合は、
を利⽤します。map
1)ブロック(block)の基本
処理は、どちらも同じで、
1, 4, 9 が出⼒されます。
para = [1, 2, 3].map {|i| i ** 2}
実⾏結果 => [1, 4, 9]
2)ブロックの利⽤応⽤編
ブロック付きメソッドから、
メソッドチェーンで
ブロックで処理を⾏なう。
(1..10).select {|i| i.even?}.map {|e| e ** 2}
実⾏結果 => [4, 16, 36, 64, 100]
2)ブロックの利⽤応⽤編
["a", "b", "c"].each_with_index do |value, key|
puts "#{key}: #{value}"
end
実⾏結果 =>
0: a
1: b
2: c
ブロック変数に、配列のkeyとvalueを渡せます。
3)ブロックを利⽤した便利メソッド
["box", "apple", "car"].sort_by { |v| v }
配列をソートできます。
配列の最⼤値を求められます。
[1, 2, 3].inject { |max, item| item > max ? item : max }
配列をグループ分けできます。
[1, 2, 3].group_by { |i| i % 2 }
実⾏結果 => {1=>[1, 3], 0=>[2]}
2)ブロックの利⽤応⽤編
[1, 2, 3].inject { |result, item| result + item }
配列の合計を計算できます。
このような繰り返し処理を
イテレーターともいいます。
他にもたくさんのメソッドがあります。
るびまサーチ
他にもたくさんの
メソッドがあります。
「るびまサーチ」で
検索して探すのも楽しいです。
https://docs.ruby-lang.org/ja/search/
3)便利なEnumerable モジュール
繰り返しを⾏なうクラスのための Mix-inです。
Mix-inとは、モジュールが提供しているメソッドを
利⽤できる仕組みです。
メソッドは全てeach を⽤いて定義されているので、
インクルードするクラスに、eachが定義
されていると繰り返し処理が便利になります。
3)便利なEnumerable モジュール
all? any? chunk chunk_while collect map collect_concat
flat_map count cycle detect find drop drop_while
each_cons each_entry each_slice each_with_index
each_with_object entries to_a find_all select find_index first
grep grep_v group_by include? member? inject reduce lazy
max max_by min min_by minmax minmax_by none? one?
partition reject reverse_each slice_after slice_before
slice_when sort sort_by take take_while to_h zip
ブロックが理解できたら、
次のステップで挑戦したいこと
yield
Proc
lambda
ココら辺が理解できると、
次のステップに進めるので、
次回まとめます   😀
Let's study together!
Thank you :)

Rubyを楽しくする第一歩!ブロックを理解する!

Editor's Notes

  • #3 徳島県出身 ライフイズテックという、中高生にプログラミングを教えるキャンプやイベントを運営している会社で、Railsエンジニアをしています。 CoEdo.rb以外にも、Swiftビギナーズ倶楽部や、WordPressもくもく倶楽部という勉強会を運営しています。
  • #4 お知らせなのですが、iPhoneアプリに関する書籍を出版しました! Swift3.0/Xcode8に対しています。 全国書店と、Kindle版を購入いただけます。 こちらは、Swiftビギナーズ倶楽部の運営陣が主体となって執筆した本です。 そちらの藤さんと小林も執筆メンバーです。 で、ビギナーズ倶楽部の中で、ハンズオンセミナーを開催したり、イベントを開催していく中で得られた知見を凝縮した書籍になります。
  • #5 普段は、ライフイズテックという中高生にプログラミングを教えるイベントやスクールを運営している会社で、エンジニアをしています。 わたしが中高生に直接プログラミングを教えることは少なくて、ライフイズテックの基幹システムや、様々なサービスや教材を開発しています。
  • #9 こちらはRails 5.0.0.beta1環境での解説を 行ってくださっています。 rc1ではいくつか作成の流れに変更がありますので、 開発のコードはそのまま使わせていただいて Rails 5.0.0.rc1 での変更点を押さえながら、 構築手順を解説しています。
  • #10 こちらはRails 5.0.0.beta1環境での解説を 行ってくださっています。 rc1ではいくつか作成の流れに変更がありますので、 開発のコードはそのまま使わせていただいて Rails 5.0.0.rc1 での変更点を押さえながら、 構築手順を解説しています。
  • #11 こちらはRails 5.0.0.beta1環境での解説を 行ってくださっています。 rc1ではいくつか作成の流れに変更がありますので、 開発のコードはそのまま使わせていただいて Rails 5.0.0.rc1 での変更点を押さえながら、 構築手順を解説しています。
  • #12 こちらはRails 5.0.0.beta1環境での解説を 行ってくださっています。 rc1ではいくつか作成の流れに変更がありますので、 開発のコードはそのまま使わせていただいて Rails 5.0.0.rc1 での変更点を押さえながら、 構築手順を解説しています。
  • #15 {}ブロック内の式が trueになる要素だけ を抽出します。 selectの反対は、rejectというメソッドがあります。 selectの反対で、{}ブロック内の式が falseになる要素だけ を抽出します。 他にも、{}ブロック内の式がtrueになった 最初の要素 を検索して返すメソッドや、
  • #16 繰り返しごとにブロック引数valueには各要素が入り、 keyには0、1、2、...と添字が入ります。