lua-users home
lua-l archive

RE: "namespaces" ?

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


> > see it implemented in Lua (the basic types support).
> 
> Just to remind you, Lua 4.0 already had support for this kind 
> of OO programming with basic types. For instance,
> 
> settagmethod(tag(""), "gettable", function (a,b)
> return getglobal('str'..b)
> end)
> 
> > ansiStr = "Hello"
> > print(ansiStr:lower())
> 
> Edgar gave several important contributions to Lua, but "basic 
> types support" was not one of them...
Edgar did it cleanly with a single metatable specifically made for the
basic type. Using this type of support, I'm able to:
ansiStr = "Hello"
print(ansiStr:gsub(...whatever...)) -- Calls 'gsub' behind your back.
wideStr = L"Hello"
print(wideStr:gsub(...whatever...)) -- Calls 'ugsub' behind your back.
The tag method above would blow up on any function that didn't have
'str' in front of it. The built-in 'gsub' does not. Neither does
'concat' or 'format'.
Additionally, I'd have to extend to the tag method above to test first
for a string type, then do your code. If that fails, I'd have to test
for a Unicode string type, then do the equivalent 'ustr*' function call.
Each time, it gets messier and messier.
Edgar's single metatable per basic type is a great, clean solution to
the problem.
Josh

AltStyle によって変換されたページ (->オリジナル) /