[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: about tables, Table and metatables :o)
- From: Coda Highland <chighland@...>
- Date: Mon, 22 Jun 2015 14:53:10 -0700
On Mon, Jun 22, 2015 at 2:37 PM, voidptr <voidptr69@gmail.com> wrote:
> Same noob on a working email this time :o)
>
>
> On Wed, Jun 17, 2015 at 8:44 PM, Coda Highland <chighland at gmail.com>
> wrote:
>> On Wed, Jun 17, 2015 at 7:56 PM, voidptr69 at hotmail.com
>> <voidptr69 at hotmail.com> wrote:
>>>
>>> Another noob tought.
>>>
>>>
>>> t = { "a", "b", "c" }
>>> s = t:concat() -- notworking same has s= t.concat(t)
>>> s = Table.concat(t)
>>>
>>> tables don't have metatable...
>>> but why ? :o)
>>>
>>> My guess is 99% of tables in script are used like a default table and
>>> could
>>> share Table by default..
>>> And keep the short calling way valid is that case.
>>>
>>> When you need to use tables for others purpose;
>>> class base or prototype base languages, mockup object, other data
>>> structures
>>> etc etc ...
>>> you will need to define a metatable and add the others functions you need
>>> (
>>> constructor, copier, destructor ...)
>>> so in those case you need to have an explicit constructor.
>>>
>>> so why not offer by default, like for String, a metatable for table ?
>>>
>>> voidptr :-)
>>>
>>
>> If tables had metatables, then what data structure would you use to
>> make objects with customized behavior?
>>
>> Tables are THE fundamental object type in Lua. Their entire purpose is
>> to be simple and generic enough to be able to do anything you want
>> with them.
>
>
>
> well reread my message :-)
> Has I said if you need another use for the table ex. build class or
> prototype language forms,
> or any kind of muckup objects you will surely, has you shown, build a
> constructor function and
> creating a link to some metatable using setmetatable.
>
> But my question is still why not bind by default tables from the system to
> Table ?
> table are used most of the time as stanard dictionary /table in script :o)
>
I did read your message several times.
The whole point is that if you want to do something else with tables,
then you should add a metatable to the tables you want to do those
things with. Having a global metatable on tables like there is on
strings would get very messy -- note that Javascript allows you to do
this, and it breaks things quite visibly, so this isn't just a
theoretical concern.
/s/ Adam