Ruby yieldの簡単な使い方

Rubyで、yieldの簡単な使い方を記述してます。rubyのバージョンは2.7.2を使用してます。do-endでの使用方法までを記述してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.2p137
yield使い方
rubyはyieldを使用すると、以下のようにコードブロックをyieldごとに実行することができます。
def hoge
yield
yield
yield
end
hoge { p 'Hello' }
# "Hello"
# "Hello"
# "Hello"
「yield」は、以下のように順番に実行されます。
def hoge
yield
yield
p 'mebee'
yield
end
hoge { p 'Hello' }
# "Hello"
# "Hello"
# "mebee"
# "Hello"
パラメーター利用
以下のようにパラメーターを利用することも可能です。
def hoge
yield 2, 2
yield 3, 3
yield 5, 3
end
hoge { |x, y| p x * y }
# 4
# 9
# 15
コードブロック確認
コードブロックが与えられているかは「p block_given?」で確認することができます。
def hoge(x,y)
p block_given?
return x * y
end
p hoge(3,3)
# false
# 9
p hoge(5,3){ p 'hello' }
# true
# 15
proc.call
proc.callを使用すれば、コードブロックが存在すれば、実行することが可能です。
def hoge(x,y,&proc)
proc.call(2,3) if block_given?
return x * y
end
p hoge(3,3)
# 9
p hoge(5,3){ |x, y| p x * y }
# 6
# 15
proc.callを、yieldに変更して、&procをなくしても同じ結果が得られます。
def hoge(x,y)
yield 2,3 if block_given?
return x * y
end
p hoge(3,3)
# 9
p hoge(5,3){ |x, y| p x * y }
# 6
# 15
なので、これのコードブロックがあるかの条件をなくしたものがyeildとなります。
def hoge(x,y)
yield 2,3
return x * y
end
p hoge(5,3){ |x, y| p x * y }
# 6
# 15
do-endを使用
一般的にyieldは、do-endを使用して実行します。
def hoge
yield 2,3
yield 3,3
yield 5,3
end
hoge do |x,y|
p x * y
end
ちなみにprocもdo-endを使用できます。
def hoge(&proc)
proc.call(2,3)
proc.call(3,3)
proc.call(5,3)
end
hoge do |x,y|
p x * y
end
# 6
# 9
# 15
-
前の記事
npm インストールできるパッケージを確認する 2020.12.19
-
次の記事
jquery mouseleaveメソッドを使ってマウスが外れたイベントを取得する 2020.12.19
コメントを書く