lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


GregF wrote: << One case I haven't seen yet mentioned in this thread is the following: do if test then a = 1 else a = 2 end print(a) end which under your proposal would print nil! It's certainly a matter of opinion, but my opinion is that is quite bad, and very hard to justify to novice coders. As has also been mentioned, a=a+1 meaning "create a new local set to 1 more than the global variable's value" would be quite disorienting as well. >> Point taken on the if blocks - this is bad, but IMHO still not *as* bad as creating a new, late-bound, system wide global which (quietly) stomps on any other such global with the same name! 'a=a+1' is less of an issue because it does not make sense unless the programmer knows there is already a wider-scope 'a'. If she is incrementing a local counter, that counter would have had to have been initialised (and therefore created) in an earlier statement. Here is another attempt at a proposal for improving this which might actually be original (prove me wrong people!): How about if automatic variables were created as upvalues of the immediately enclosing function (or chunk)? This would make them compile-time but with function-wide scope. I think this might be a good compromise and accord with the naive expectation about how things should behave. - John