Differences between Proc and Lambda

后端 未结 1 1148
南旧
南旧 2020-12-14 08:00

Ruby has differences between Procs created via Proc.new and lambda (or the ->() operator in 1.9). It appears that non-lambda Procs

相关标签:
1条回答
  • 2020-12-14 09:03

    There are two main differences between lambdas and non-lambda Procs:

    1. Just like methods, lambdas return from themselves, whereas non-lambda Procs return from the enclosing method, just like blocks.
    2. Just like methods, lambdas have strict argument checking, whereas non-lambda Procs have loose argument checking, just like blocks.

    Or, in short: lambdas behave like methods, non-lambda Procs behave like blocks.

    What you are seeing there is an instance of #2. Try it with a block and a method in addition to a non-lambda Proc and a lambda, and you'll see. (Without this behavior, Hash#each would be a real PITA to use, since it does yield an array with two-elements, but you pretty much always want to treat it as two arguments.)

    0 讨论(0)
提交回复
热议问题