Project

General

Profile

Feature #11538

ensure variable syntax

Added by arimay (yasuhiro arima) over 3 years ago. Updated 10 months ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-dev:<unknown>]

Description

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

ensure '=>' lhs

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

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

ensure
  p  retval

end

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

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

ensure => retval
  p  retval

end

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

History

#1

Updated by matz (Yukihiro Matsumoto) over 3 years ago

ensure => e で e が受け取る値を明確に定義してください。ensureはいろいろな場合(正常終了、例外、throwなど)に呼ばれるので、それぞれのケースについてどうなるのかが気になります。

Matz.

#2

Updated by yhara (Yutaka HARA) 10 months ago

  • Status changed from Open to Feedback

Also available in: Atom PDF