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を使えば、部分的な使い回しなどができそうですね...
まだまだ、理解が足りていないところもありますが、ちょっとずつ頑張ります!!
この記事が気に入ったらサポートをしてみませんか?