yarv-dev:17
From: SASADA Koichi <ko1 atdot.net>
Date: Mon, 17 May 2004 10:37:07 +0900
Subject: [yarv-dev:17] Re: initialize block local variables
matz ruby-lang.org (Yukihiro Matsumoto) wrote :
[ [yarv-dev:16] Re: initialize block local variables ]
at Mon, 17 May 2004 08:38:34 +0900
> CVSのログを見ると去年の7月になかださんが追加しています。ので、
> なかださんに聞かないと断言できないんですが、実装を見る限りは
> 使えそうですね。でも、これだと
>
> loop{
> a = 1
> b = 2
> eval("p defined?(c)")
> c = 3
> break
> }
>
> の結果が真になるのでまずいケースもあるような。
現在の実装だと真になっちゃうんですね。となると、これに頼っ
ていると、ギャっという可能性がある、と。
> Riteだとブロックローカル変数という概念がないんで実装が楽にな
> るでしょうね。
yieldの引数は、ブロックローカル変数になるので、やっぱり実装
の手間は楽にならないのではないかと思っていたのですが、これも
メソッドローカル変数になるんでしょうか。
------------------------
def m(arg)
yield(arg)
end
m(1){|i|
p i
}
p i #=> 1 になる?
------------------------
ruby-talk をまじめに読んでいないので、このあたりの仕様
が固まっていたら、ポインタなどを示していただけると幸いです。
--
// SASADA Koichi at atdot dot net
//
// ブロックローカル変数がまったくなくなると泣いて喜んでしま
// うかもしれない。でも、いままでこのために色々考えてきたの
// で、ちょっと残念かもしれない。
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
15 2004-05-17 04:14 [ko1 atdot.net ] initialize block local variables 16 2004-05-17 08:38 ┗[matz ruby-lang.org ] -> 17 2004-05-17 10:37 ┣[ko1 atdot.net ] 20 2004-05-17 13:23 ┃┗[matz ruby-lang.org ] 22 2004-05-17 15:58 ┃ ┗[ko1 atdot.net ] 23 2004-05-17 16:14 ┃ ┗[matz ruby-lang.org ] 24 2004-05-17 16:58 ┃ ┗[ko1 namikilab.tuat.a] 25 2004-05-17 17:27 ┃ ┗[matz ruby-lang.org ] 26 2004-05-17 18:09 ┃ ┗[ko1 atdot.net ] 27 2004-05-17 18:38 ┃ ┗[matz ruby-lang.org ] 21 2004-05-17 13:45 ┗[nobu.nokada softhome]