yieldってなんだ...?

こんにちは!

railsでyieldというものが出てきたので、気になって調べてみました。

yieldの意味

そもそも単語の意味がわからないので調べてみると👇

もたらす、生む、引き起こす、(圧迫または圧力に負けて)明け渡す、譲渡する、身をゆだねる、ふける、(当然なものとして、また要求されて)(…に)許す

引用元 webilio英和辞典

上記から産むとか委ねるということがわかりますね。

また、yieldはrailsでの特別なものだと勝手に思っていましたが、

調べてみるとrubyで使えるメソッドだそうです。(そりゃそうか...笑)

rubyでの使い方

yieldは、ブロックをyieldの数だけ実行することができます。

ブロックとは、
・do ~ end で囲まれた処理
・{ }の中に書かれた処理

例えば、こんな感じ

morning do
 puts "おはようございます"
end

night {
 puts "今日も楽しかった"
 puts "おやすみなさい"
}

このブロックで書かれた処理をyieldを使って動かしてみると...

def morning
 yield
 yield
end

morning do
 puts "おはようございます"
end

=> おはようございます
   おはようございます
def night
 yield
end
    
    
night {
 puts "今日も楽しかった"
 puts "おやすみなさい"
}

=> 今日も楽しかった
   おやすみなさい


このようになる、上記からもyieldの数だけ処理が行われていることがわかる。

また、yieldはパラメーターを渡すこともできる

def greeting
 yield "おはようございます"
 yield "こんにちは"
 yield "おやすみなさい"
end

greeting do |text|
 puts "今の時間の挨拶は" + text + "です"
end

=> 今の時間の挨拶はおはようございますです
   今の時間の挨拶はこんにちはです
   今の時間の挨拶はおやすみなさいです

まとめ

このyieldを使えば、部分的な使い回しなどができそうですね...

まだまだ、理解が足りていないところもありますが、ちょっとずつ頑張ります!!


この記事が気に入ったらサポートをしてみませんか?