Issue #11538 has been reported by yasuhiro arima.

----------------------------------------
Feature #11538: ensure variable syntax
https://bugs.ruby-lang.org/issues/11538

* Author: yasuhiro arima
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------

ensure の構文を拡張して、コンテキストの値を受け取れるようにする提案です。
rescue で例外オブジェクトを変数に受けて参照するのと同様に、ensure で結果のオブジェクトを参照します。

  ensure '=>' lhs

途中での return による打ち切りなどによって、適切でない値が返ることがあります。
現状でこれを確認するためには、ensure で参照できるようにあらかじめ変数に束縛する必要があります。

~~~ruby
def abs( arg )
  retval = nil
  return  retval =  arg    if arg > 0
  return  retval = -arg    if arg < 0
  retval

ensure
  p  retval

end
~~~

これを ensure で変数に束縛できると、記述が簡潔になります。

~~~ruby
def bar( arg )
  return  arg    if arg > 0
  return -arg    if arg < 0

ensure => retval
  p  retval

end
~~~
パッチはつくっていませんが、そろそろ締め切りらしいので提案してみます。




-- 
https://bugs.ruby-lang.org/