その他
    ホーム 技術発信 DoRuby [Ruby] yield ってどんなもの?

    [Ruby] yield ってどんなもの?

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    ご無沙汰してます。トマトです。
    自分自身もよくわからなかった、ruby の yield について
    理解がてら説明してみます。

    yield とは?

    一言で行ってしまうと、 ブロックに処理を引き渡してくれる役割をもっています。
    文字で書くと非常にわかりづらいので、
    実際に動作を見てみましょう。。。

      def test
    puts "#################"
    puts "yield実行前"
    puts "#################"
    yield(1,2)
    puts "#################"
    puts "yield実行後"
    puts "#################"
    end

    test do |x,y|
    my_sum = x+y
    puts "#{x}+#{y}=#{my_sum}"
    end

    こんな感じのコードを書いたとすると、 実行結果は下記の通りになります。

      #################
    yield実行前
    #################
    1+2=3
    #################
    yield実行後
    #################

    実行結果を見る通り、yield を記述した箇所で
    ブロックに処理を引き渡して実行しているのがわかります。
    上記はすごく単純な例になりますが、少しでも理解の助けになればと思います。