In article <87bs8xkfqr.wl / studly.priv.netlab.jp>,
  Shugo Maeda <shugo / ruby-lang.org> writes:

> たとえば、
> 
> open(filename) do |f|
>   text = f.read
> end
> print text
> 
> みたいなケースでは、
> 
> text = nil
> open(filename) do |f|
>   text = f.read
> end
> print text
> 
> と書かないといけないのはちょっといやだなあと思うわけです。

それはいやですね。私は

  print open(filename) {|f| f.read}

と書くことにしていました。(今は File.read ですけど。)

むろん、一般に通用する解決策じゃありませんが、ブロックが必ず一回だけ実
行される場合、ブロックの返り値がメソッドの返り値になる場合が多いので、
値を一つ返すぶんにはあまり困りません。

困るケースは、メソッドの返り値がブロックの返り値でない場合か、値をふた
つ以上ブロックの外側に返す必要がある場合にでしょうか。個人的には苦に思っ
た覚えがありませんが、私に関してそういうケースが十分に少なかったのか、
あるいは私が単に鈍いのかはよくわかりません。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)