|
Am 30.03.2014 19:57 schröbte Andrew Starks:
I think it's bad, because it might be motivation to not use strict or to consider it a "hack."
It *is* a hack. An impressive one because it achieves a lot with little code, but on the other hand it modifies a shared resource, so it affects other people's code, and prevents them from setting a metatable on `_G` themselves (or at least makes it harder). And as you already mentioned, there are a lot of alternatives (most of which I consider superior to `strict.lua`), and this is my main motivation not to use `strict.lua` ...
##Proposal My idea (probably not a new one) is in two parts: 1: `global` keyword is (probably) shorthand for rawset(_ENV, var, val)
Most module writers would probably use `rawset` directly anyway, because it is compatible with Lua 5.x (for x < 3). I think the current approach is `var = nil` somewhere at top level, which is also backwards compatible. So, IMHO, a new keyword would do more harm than good ...
2: _STRICT is a value that is global and defaults to `false` (or nil, but one must be able to assign it globally).
Why not just preload `strict.lua` instead?! Then people can `require` it if they want to. But I'd rather use something that works offline (at compile time), or at least can be enabled/disabled on a per-chunk basis (maybe as a fallback to the offline tool).
Thanks! -Andrew
Philipp