< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #9777 has been updated by Richard Schneeman.
Another possible reason to convert a Proc to a lambda is to for raising error on arguments
```
foo = -> { puts "hello" }
foo.call(1)
ArgumentError: wrong number of arguments (1 for 0)
from (irb):4:in `block in irb_binding'
from (irb):5:in `call'
from (irb):5
from /Users/schneems/.rubies/ruby-2.1.1/bin/irb:11:in `<main>'
bar = Proc.new { puts "hello" }
bar.call(1)
# => "hello"
```
If a user passes in a proc there will be no errors or warnings that the proc was improperly declared. Converting to a lambda would change the behavior to then raise an error.
----------------------------------------
Feature #9777: Feature Proposal: Proc#to_lambda
https://bugs.ruby-lang.org/issues/9777#change-46576
* Author: Richard Schneeman
* Status: Feedback
* Priority: Normal
* Assignee:
* Category: core
* Target version: current: 2.2.0
----------------------------------------
Currently different block objects such as a lambda can be converted into to a proc: http://www.ruby-doc.org/core-1.9.3/Proc.html#method-i-to_proc
However you cannot turn a Proc instance into a lambda. Since a Proc and lambda behave differently sometimes you may want to convert between the two functionalities. One example is a `return` inside of the block. In a lambda the `return` keyword exits the closure, in a Proc the `return` keyword raises an exception.
There is currently no implementation standard way to convert a Proc to a lambda. I made a gem that makes this easier: https://github.com/schneems/proc_to_lambda but it seems overkill.
If MRI introduces a `to_lambda` method on Proc then we can standardize on an interface for this behavior. This question on stack overflow has been upvoted many times: http://stackoverflow.com/questions/2946603/ruby-convert-proc-to-lambda. I think other Ruby developers would like this behavior supported by Ruby core.
--
https://bugs.ruby-lang.org/