Submit Search
Ruby初級者向けレッスン 56回 ─── ブロック
0 likes
613 views
higaki
Ruby の特徴のひとつであるブロックについてお話します。 ブロックを使ったメソッドの利用から、ブロックを使うメソッドの作り方までを紹介します。
Technology
Read more
1 of 32
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
More Related Content
PDF
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
PDF
実はこんなこともできる Fireworksの裏技
Akira Maruyama
PDF
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
三七男 山本
PPTX
Zshって最強らしい
ngi group.
PPTX
Windowsでも使えるシェル
Tetsuya Hasegawa
PDF
Interactive Music II SuperCollider入門 2 - 関数とUGen
Atsushi Tadokoro
PDF
松江Ruby会議05 dxruby
mirichi_
PDF
Bitbucket Pull Request 練習帳
Hiramatsu Ryosuke
Ruby初級者向けレッスン 50回 ─── ブロック
higaki
実はこんなこともできる Fireworksの裏技
Akira Maruyama
minami.rb最初で最後のLT大会「Wakayama.rbの紹介」
三七男 山本
Zshって最強らしい
ngi group.
Windowsでも使えるシェル
Tetsuya Hasegawa
Interactive Music II SuperCollider入門 2 - 関数とUGen
Atsushi Tadokoro
松江Ruby会議05 dxruby
mirichi_
Bitbucket Pull Request 練習帳
Hiramatsu Ryosuke
What's hot
(6)
ODP
松江Ruby会議05 dxruby
mirichi_
PDF
板ポリだけで めちゃカッコいい グラフィックスを出す!
notargs
PDF
Vim の話
cohama
PDF
怠惰なRubyistへの道
nagachika t
KEY
GTC2011 Japan
Takuro Iizuka
PDF
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
文樹 高橋
松江Ruby会議05 dxruby
mirichi_
板ポリだけで めちゃカッコいい グラフィックスを出す!
notargs
Vim の話
cohama
怠惰なRubyistへの道
nagachika t
GTC2011 Japan
Takuro Iizuka
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
文樹 高橋
Ad
Similar to Ruby初級者向けレッスン 56回 ─── ブロック
(20)
PDF
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
PDF
Ruby初級者向けレッスン KOF2015 出張版
higaki
PPTX
Ruby講座第二回
mitsunaga
PDF
Rubyを楽しくする第一歩!ブロックを理解する!
Kanako Kobayashi
PPTX
第3回輪講
mh_amako
PPTX
Ruby4章
Masayuki Matsumoto
PPTX
Ruby4章
Yuki Urata
PPT
Start!! Ruby
mitim
PDF
Ruby&Active Support for expert 3
xibbar
PDF
Rubyにメソッドを追加して遊ぶ話
Masaya Konishi
PDF
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
PDF
Ruby でつくる型付き Ruby
mametter
PPTX
Ruby enumerable source code reading
do_aki
PDF
現実世界のJRuby(ショートバージョン)
Hiroshi Nakamura
KEY
Rails基礎講座 part.1
Jun Yokoyama
PPT
第1部「一時間で覚えるruby」
Hiromu Shioya
PDF
Ruby の文字列について
Tomoya Kawanishi
PDF
怠惰なRubyistへの道 fukuoka rubykaigi01
nagachika t
PDF
Ruby
Shintaro Abe
PDF
Rubyメソッド探索
Masayuki Nishida
Rubyist生活に欠かせないブロック構文の話
Kohei Taniguchi
Ruby初級者向けレッスン KOF2015 出張版
higaki
Ruby講座第二回
mitsunaga
Rubyを楽しくする第一歩!ブロックを理解する!
Kanako Kobayashi
第3回輪講
mh_amako
Ruby4章
Masayuki Matsumoto
Ruby4章
Yuki Urata
Start!! Ruby
mitim
Ruby&Active Support for expert 3
xibbar
Rubyにメソッドを追加して遊ぶ話
Masaya Konishi
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
Ruby でつくる型付き Ruby
mametter
Ruby enumerable source code reading
do_aki
現実世界のJRuby(ショートバージョン)
Hiroshi Nakamura
Rails基礎講座 part.1
Jun Yokoyama
第1部「一時間で覚えるruby」
Hiromu Shioya
Ruby の文字列について
Tomoya Kawanishi
怠惰なRubyistへの道 fukuoka rubykaigi01
nagachika t
Ruby
Shintaro Abe
Rubyメソッド探索
Masayuki Nishida
Ad
More from higaki
(11)
PDF
Ruby初級者向けレッスン 55回 ─── 例外
higaki
PDF
Ruby初級者向けレッスン 54回 ─── クラス
higaki
PDF
初級者向けレッスン 52回 ─── 文字列
higaki
PDF
初級者向けレッスン 51回 ─── 例外
higaki
PDF
PHPer のための Ruby 教室
higaki
PDF
Ruby 初級者向けレッスン 49回───クラス
higaki
PDF
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
PDF
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
PDF
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
PDF
ジュンク堂書店の方から来ました
higaki
PDF
Ruby初級者向けレッスン 45回 ─── 例外
higaki
Ruby初級者向けレッスン 55回 ─── 例外
higaki
Ruby初級者向けレッスン 54回 ─── クラス
higaki
初級者向けレッスン 52回 ─── 文字列
higaki
初級者向けレッスン 51回 ─── 例外
higaki
PHPer のための Ruby 教室
higaki
Ruby 初級者向けレッスン 49回───クラス
higaki
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
ジュンク堂書店の方から来ました
higaki
Ruby初級者向けレッスン 45回 ─── 例外
higaki
Ruby初級者向けレッスン 56回 ─── ブロック
1.
2016年1月9日 Ruby初級者向けレッスン 56回 — ブロック
— ひがき @ Ruby関西
2.
お品書き • ブロックとは? – 繰り返し –
Enumerable • メソッドにブロックを渡す • ブロックで値を受け取る • メソッドでブロックを受け取る • ブロックに値を渡す
3.
繰り返し a = [’a’,
’b’, ’c’] a.each do |i| puts i end # >> a # >> b # >> c
4.
繰り返し a = [’a’,
’b’, ’c’] a.each{|i| puts i} # >> a # >> b # >> c
5.
Enumerable • 繰り返しを行なうクラスのためのモジュール • クラスには
each メソッドが必要 Array.ancestors # => [Array, Enumerable, Object, Kernel, Hash.ancestors # => [Hash, Enumerable, Object, Kernel,
6.
BasicObject Object Mix-in Kernel Mix-in Enumerable map select inject Array Hash each each
7.
便利な例 a = [0,
1, 2, 3] # => [0, 1, 2, 3] a.map{|i| i * i} # => [0, 1, 4, 9] a.select{|i| i.even?} # => [0, 2] a.inject{|s, i| s + i} # => 6 a.find{|i| i.odd?} # => 1 a.all?{|i| i.even?} # => false a.any?{|i| i.even?} # => true
8.
array.map{|i| i *
i} アプリケーション ブロック オブジェクト -生成 § ¦ ¤ ¥{|i| i * i} -map 呼出
9.
ブロックを渡す • メソッドには、ブロックをひとつ渡せる。 • ブロックをどう使うかは、メソッド次第。 open(’hello.txt’)
# = #File:hello.txt open(’hello.txt’){|f| f.read} # = こんにちはn
10.
ファイル入出力の例 begin f = open(’hello.txt’) f.read ensure f.close
unless f.nil? end
11.
ブロックのない open アプリケーション オブジェクト -open -read -close ×
12.
ブロック付き open open(’hello.txt’){|f| f.read} アプリケーション
ブロック オブジェクト § ¦ ¤ ¥{|f| f.read} -生成 -open 呼出 close ×
13.
値を受け取る • ブロックは、値を受け取れる。 • 何を幾つ受け取れるかは、メソッド次第。
14.
値は受け取らなくてもいい 2.times{|i| puts i} #
0 # 1 2.times{puts ’こんにちは’} # こんにちは # こんにちは
15.
Hash の例 people =
{matz: 50, dhh: 36} # = {:matz=50, :dhh=36} people.each do |person| p person end # [:matz, 50] # [:dhh, 36]
16.
Hash の例 (2) people
= {matz: 50, dhh: 36} # = {:matz=50, :dhh=36} people.each do |name, age| puts #{name}(#{age}) end # matz(50) # dhh(36)
17.
each_cons の例 midosuji =
[梅田, 淀屋橋, 本町, 心斎橋, なんば] midosuji.each_cons(2){|path| p path} # [梅田, 淀屋橋] # [淀屋橋, 本町] # [本町, 心斎橋] # [心斎橋, なんば]
18.
each_cons の例 (2) midosuji.each_cons(2)
do |from, to| p #{from} - #{to} end # 梅田 - 淀屋橋 # 淀屋橋 - 本町 # 本町 - 心斎橋 # 心斎橋 - なんば
19.
each_cons の例 (3) a
= [*0..3] # = [0, 1, 2, 3] a.each_cons(3){|i| p i} # [0, 1, 2] # [1, 2, 3] a.each_cons(3){|i, j| p [i, j]} # [0, 1] # [1, 2]
20.
ブロックを受け取るメソッド • こんな感じで呼びたい x3{puts ’Ruby3’} #
Ruby3 # Ruby3 # Ruby3
21.
ブロックを受け取る def x3 def
x3(block) yield block.call yield block.call yield block.call end end x3{puts ’Ruby3’} # Ruby3 # Ruby3 # Ruby3
22.
値を渡す def x3 def
x3(block) yield 0 block.call 0 yield 1 block.call 1 yield 2 block.call 2 end end x3{|i| puts Ruby#{i}} # Ruby0 # Ruby1 # Ruby2
23.
ふたつの値を渡す def x3 yield ’Ruby’,
0 # 文字列 と 数値 yield ’Ruby’, 1 yield [’Ruby’, 2] # ひとつの配列 end
24.
ふたつの値を渡す (2) x3{|i, j|
p #{i} #{j}} # Ruby 0 # Ruby 1 # Ruby 2
25.
ふたつの値を渡す (3) x3{|i| p
i} # ひとつの変数で受けとる # Ruby # Ruby # [Ruby, 2]
26.
ブロックは Proc block =
Proc.new do |i, j| puts #{i}#{j} end x3(block) # Ruby0 # Ruby1 # Ruby2
27.
演習問題 0 今日のレッスンで分からなかったこと、疑問に 思ったことをグループで話し合ってみよう。
28.
演習問題 1 0 から
9 までの数値をもつ配列 a がある。 • 各要素を順番に表示しよう。 • 各要素を文字列にした配列を作ろう。 • 各要素を 2倍した値を持つ配列を作ろう。 • 全要素の合計値を計算しよう。 a = (0..9).to_a # = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
29.
演習問題 2 0 から
9 までの数値をもつ配列 a がある。 奇数の要素だけを持つ配列を作ろう。 ただし odd? メソッドは使用禁止。 (これは Enumerable を使ったパズルです) a = [*0..9] # = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] a. Enumerable メソッド { odd? 禁止 }
30.
演習問題 3 Enumerable#map を自作してみよう。 module
Enumerable def my_map …… end end ただし Enumerable#map と Enumerable#map! は使用禁止。
31.
自己紹介 • 名前 (ニックネーム) •
普段の仕事・研究内容・代表作 • Ruby歴・コンピュータ歴 • 勉強会に来た目的 • などなど
32.
参考 • 公式サイト https://www.ruby-lang.org/ • るりま http://docs.ruby-lang.org/ja/ •
解答例 https://github.com/higaki/ learn_ruby_kansai_70
Download