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/