Actions
Feature #11538
closedensure variable syntax
    Feature #11538:
    ensure 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 10 years ago
          
          
        
        
      
      ensure => e で e が受け取る値を明確に定義してください。ensureはいろいろな場合(正常終了、例外、throwなど)に呼ばれるので、それぞれのケースについてどうなるのかが気になります。
Matz.
        
          
          Updated by yhara (Yutaka HARA) over 7 years ago
          
          
        
        
      
      - Status changed from Open to Feedback
 
Actions