タグ

rubyとブロックに関するrin51のブックマーク (2)

  • Kernel.#lambda (Ruby 3.3 リファレンスマニュアル)

    proc { ... } -> Proc[permalink][rdoc][edit] lambda { ... } -> Proc 与えられたブロックから手続きオブジェクト (Proc のインスタンス) を生成して返します。Proc.new に近い働きをします。 また、lambda に & 引数を渡すのは推奨されません。& 引数ではなくてブロック記法で記述する必要があります。 & 引数を渡した lambda は Warning[:deprecated] = true のときに警告メッセージ「warning: lambda without a literal block is deprecated; use the proc without lambda instead」を出力します。 [EXCEPTION] ArgumentError: ブロックを省略した呼び出しを行ったときに発生します

  • Rubyの ブロック、Proc.new、lambdaの違い - Qiita

    ブロックとProc.newはそもそも別物です。 lambdaに関してはProc.newと同じようですが若干違いがあります。 この違いを理解しておかないと、ハマる可能性があります。 ブロックとProc.new ブロックとは まずブロックとはdo~endまたは{~}の部分で引数のような形で渡すものです。 以下のコードでは{ puts "block" }がそれに相当します。 また、受け取り側で引数を明示的に書かなくても渡す事ができyieldでブロックを評価する事が出来ます。 おそらくlist.each{ |a| a.hoge }などで使った事があると思います。それがブロックです。

    Rubyの ブロック、Proc.new、lambdaの違い - Qiita
    rin51
    rin51 2020/03/15
    ちゃんと理解してないとreturnの挙動でハマりそう
  • 1