[前][次][番号順一覧][スレッド一覧][生データ]

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]