From: Shin'ya Adzumi Date: 2002-06-03T21:44:54+09:00 Subject: [ruby-dev:17297] Re: blocks and local variables あづみです。 Takaaki Tateishi wrote: > > a = nil > > ary.each{|a| break if value_is_ok? a} > > func_call(a) > > という感じで使うことは可能かと。 > > 繰返し子として使われる場合ですね.もし,以下の(a),(b)の > ように書かなければならない場合,煩わしさは感じますか? > > -- (a) > a = nil > ary.each{|x| a = x; break if value_is_ok? a} > func_call(a) > > -- (b) > for a in ary > break if value_is_ok? a > end > -- (b) は例に出したのが Array#each だから書ける方法なので除外 するとして、(a) と書くことを煩わしく感じるかといえば、「今 の仕様に慣れているので」 若干煩わしく感じるかなと思います。 むしろ、「a はブロックの外と共有しているが x は共有してな い」というのをいちいち考えなくてはいけないことのほうが煩わ しいかなと思います。a も共有してなければ分かりやすいんです が、それはそれで不便ですし。 安積伸弥 adzumi@denpa.org