Actions
Feature #11538
closedensure variable syntax
Status:
Feedback
Assignee:
-
Target version:
-
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
パッチはつくっていませんが、そろそろ締め切りらしいので提案してみます。
Updated by matz (Yukihiro Matsumoto) about 9 years ago
ensure => e
で e が受け取る値を明確に定義してください。ensureはいろいろな場合(正常終了、例外、throwなど)に呼ばれるので、それぞれのケースについてどうなるのかが気になります。
Matz.
Updated by yhara (Yutaka HARA) over 6 years ago
- Status changed from Open to Feedback
Actions
Like0
Like0Like0