rubyのブロックの特殊な使い方


キーストン ホーム

前に戻る

ruby Tips.
Java, C#, C++ 等で、メソッド(関数)にするまでもないが、可読性を良くするために、
処理をまとめたいことが良くある。わたしは以下のような記述をする。

void func()
{
  // ... do anything ...
  // ...

  // 合計を計算するブロック(ここではとりあえず足し算してみる。)
  int wSum = 0;
  {
    wSum += 1;
    wSum += 2;
    wSum += 3;
    wSum += 4;
  }

  // ...
}


この記述は Java, C#, C++ では有効だが、ruby ではこういうリテラルがない。
だが、下記で同様なことが可能だ。


def scope
  yield
end

if __FILE__==$0
  
  wSum=0
  scope {
    wSum += 1
    wSum += 2
    wSum += 3
    wSum += 4
  }

end


前に戻る