From: matz@... (Yukihiro Matsumoto) Date: 2003-02-13T09:42:03+09:00 Subject: Re: Lexical scope and closures Hi, In message "Re: Lexical scope and closures" on 03/02/13, "Hal E. Fulton" writes: |What happens to the case where obj has a meth= method, and |we put obj.meth between vertical bars? This will cause warning first, then eventually become error in the far future version. Block parameters will be more like method arguments. |And how will I save the value of an iterated variable? Will I have |to assign it to a var in the outer scope as soon as I enter the |block? You have to assign to a variable from a block parameter. |> It will also break old code where it depends on a variable introduced in a |> block being local, e.g. |> |> Thread.new { |> i = 0 |> ... use i locally |> } |> |> I don't remember seeing a warning for this situation being discussed, but |it |> would seem logical to do so. | |Hmm, even more confusing. But perhaps you could simply add |your block-local variable(s) to the list: Thread.new {|i|... Yes, it's possible, even now. |It seems that Matz's INVIOLABLE rule is to keep Ruby |declarationless. Every solution I saw (I think) that |kept all functionality involved some kind of declaration |mechanism. Yes, for variable declarations. But I'm always open for new ideas. matz.