プログラミング、フリーダイビング、ブロックチェーンのブログ

プログラミング道場

私がオススメするプログラミング教材です

私がおすすめするプログラミング教材のまとめ【書籍】

目次1 これからエンジニアになりたい人へ向けた本2 プログラミング言語3 アプリ開発4 サーバー、インフラ、セキュリティなど5 機械学習系6 ゲーム開発7 データベース8 デザイン9 組織作り10 自作シリーズ11 その他12 おまけ これ ...

続きを見る

【Ruby入門】ブロック(yield)を使う理由

更新日:

記事の内容


この記事では、Rubyでブロックを使う理由を説明します。
ブロックを使うコードと使わないコードの2つを比較するので、違いがわかりやすいはずです。

1から5までを表示させる

1から5までを表示させる処理は、普通にeachを回しながら表示させる方法でもできるし、blockを使ったやり方でもできます。

# blockを使わない
def display_number_each
(1..5).each do |v|
puts v
end
end
# blockを使う
def display_number_block(&block)
(1..5).each do |v|
block.call v
end
end
display_number_each
# 1
# 2
# 3
# 4
# 5
display_number_block do |num|
puts num
end
# 1
# 2
# 3
# 4
# 5

1から5までループする処理を共通化させる

次に、以下の2つの処理について考えてみます。

  • 1から5までループさせて、表示する
  • 1から5までをループさせて、合計する

「1から5までをループさせて」という処理を共通化するために、ブロックを使います。
blockを使わない処理の場合も書いているので、どこが共通化されていているのか、確認してみて下さい。

# blockを使わない処理
def display_number_each
(1..5).each do |v|
puts v
end
end
def sum_number_each
val = 0
(1..5).each do |v|
val += v
end
puts val
end
display_number_each
# 1
# 2
# 3
# 4
# 5
sum_number_each
# 15
# blockを使う場合の処理
# 1から5まで回す処理
def loop_1_to_5(&block)
(1..5).each do |v|
block.call v
end
end
# 1から5までを表示する
def display_number
loop_1_to_5 do |num|
puts num
end
end
# 1から5までを足している
def sum_number
s_v = 0
loop_1_to_5 do |num|
s_v += num
end
puts s_v
end
display_number
# 1
# 2
# 3
# 4
# 5
sum_number
# 15

yieldを使う

block.callは、yieldで置き換えることもできます。

# yieldを使っても同じことができます
# 1から5まで回す処理
def loop_1_to_5(&block)
(1..5).each do |v|
yield v
end
end
# 1から5までを表示する
def display_number
loop_1_to_5 do |num|
puts num
end
end
# 1から5までを足している
def sum_number
s_v = 0
loop_1_to_5 do |num|
s_v += num
end
puts s_v
end
display_number
# 1
# 2
# 3
# 4
# 5
sum_number
# 15

eachにblockを渡す

eachのようにblockを受け付けるメソッドには、blockをそのまま渡すこともできます。

# eachのようにblockを受け付けるメソッドには、そのまま渡すこともできます
# 1から5まで回す処理
def loop_1_to_5(&block)
(1..5).each &block
end
# 1から5までを表示する
def display_number
loop_1_to_5 do |num|
puts num
end
end
# 1から5までを足している
def sum_number
s_v = 0
loop_1_to_5 do |num|
s_v += num
end
puts s_v
end
display_number
# 1
# 2
# 3
# 4
# 5
sum_number
# 15

【Python入門】yieldを使って処理をまとめる方法

目次1 1から5までを表示させる処理2 yieldの処理 1から5までを表示させる処理 まずは、普通に以下の関数を実装します。 1から5の数字を表示する関数 1から5の数字を足して、合計を表示する関数 1から5の数字を掛けて、合計を表示する ...

続きを見る

【PHP入門】yield構文の使い方を説明します

目次1 yieldのメリット2 yieldの使い方3 yieldのメモリ効率を確認 yieldのメリット yeildには、以下の2つのメリットがあります。 処理をまとめることができる メモリの節約ができる では、実際に使い方を見ていきたいと ...

続きを見る

Ruby初心者から抜け出したい人に、オススメの本です



Rubyをより詳しく勉強したい人には、この記事がオススメです

Rubyの学習でおすすめの本と動画【2024年最新】

▼ Ruby on Railsについては、この記事で紹介しています 目次1 動画教材2 初心者向け【入門編】3 中級者向け4 上級者向け 動画教材 "ちゃんと" Ruby を学ぼう! ー オブジェクト指向機能ってなんだ? ▼ 興味がある方は ...

続きを見る


Ruby on Railsをより詳しく勉強したい人には、この記事がオススメです

Ruby on Railsの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 初心者向け3 中級者向け 動画教材 Ruby Metaprogramming - Complete Course ▼ 興味がある方は、画像をクリック 英語版です。 Rubyのメタプログラミングについて学べます。 Ruby ...

続きを見る


Gitをより詳しく勉強したい人には、この記事がオススメです

Gitの学習でおすすめの本と動画【2024年最新】

目次1 動画教材2 漫画?でわかりやすく学ぶ入門書の定番3 初心者向け4 中級者向け5 上級者向け 動画教材 もう怖くないGit!チーム開発で必要なGitを完全マスター ▼ 興味がある方は、画像をクリック Gitの基本コマンド、ブランチやマ ...

続きを見る

-Ruby, プログラミング

S