block上級

Ruby の Proc と Lambda の `return` の振る舞いの違いはどれですか?

  • 違いはない
  • Proc の return は呼び出し元メソッドからも return する。Lambda の return は Lambda 自身からのみ return する
  • Lambda の return は呼び出し元メソッドからも return する。Proc の return は Lambda 自身からのみ return する
  • Proc は return を使えない

解説

Proc 内の `return` は定義されたスコープのメソッドに影響し、Lambda よりも制御フローが強く働きます。Lambda 内の `return` は Lambda 自身からのみ返り、呼び出し元の処理は継続します。また Lambda は引数の数チェックが厳密ですが、Proc は緩やかです。