[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: Forward Declaration
- From: virgil@... (Virgil Smith)
- Date: Tue, 14 Oct 2003 11:43:57 -0500
Sigh, this answer has been given twice and is needlessly roundabout.
Forward referencing is a problem for systems that use strictly closed
declarations (not at all like Lua and tables). You can add a table entry at
any time.
The direct answer has been given once, but I will repeat it with slightly
more explanation.
Here it is...
---------
SubMenu1 =
{
["New Campaign"] = ID_CAMPAIGN,
["New Random Map"] = ID_RANDOMMAP,
};
Menu =
{
["New"] = SubMenu1,
["Load Game"] = ID_LOADGAME,
["Exit"] = ID_EXIT
}
SubMenu1["Back"] = Menu
---------
Note that the first table construction/assignment statement creates a table
and assigns a reference to it into SubMenu1. The second assigns a reference
to the same table value that is referenced by SubMenu1 (inside a new table).
The last statement adds an entry to the table referenced by SubMenu1 (and
Menu.New). This new entry happens to be a reference to the table referenced
by Menu. This of course makes for a circular reference (Menu ==
Menu.New.Back), however, this is not necessarily a problem since Lua uses a
mark and sweep garbage collection system. Of course if you are using
anything that "blindly" recurses tables (such as a naive lazy copy or
serializer mechanism) it will have a problem with this.
-----Original Message-----
From: lua-bounces@bazar2.conectiva.com.br
[mailto:lua-bounces@bazar2.conectiva.com.br]On Behalf Of Bilyk, Alex
Sent: Tuesday, October 14, 2003 11:04 AM
To: Lua list
Subject: RE: Forward Declaration
Use "Menu" instead of Menu. Then, at run time, you can resolve the name
"Menu" to the object under it.
["Back"] = "Menu" <-- No problem :)
-----Original Message-----
From: Speight.Marcus [mailto:marcus.speight@vivid-gaming.com]
Sent: Tuesday, October 14, 2003 3:51 AM
To: LUA (E-mail)
Subject: Forward Declaration
Hi,
I'm fairly new to LUA and hoped someone could answer a problem for me.
I have a menu system that loads an lua script. But I need a menu to back
reference.
e.g.
SubMenu1 =
{
["New Campaign"] = ID_CAMPAIGN,
["New Random Map"] = ID_RANDOMMAP,
["Back"] = Menu <-- Problem
};
Menu =
{
["New"] = SubMenu1,
["Load Game"] = ID_LOADGAME,
["Exit"] = ID_EXIT
};
I tried adding Menu = {}; at the beginning of the file but it did not help.
How to I do this?
Marcus Speight
Software Engineer
Vivid Gaming
The views expressed in this message are those of the sender and not
necessarily those of IGT - UK Limited and its associated companies.
<<attachment: winmail.dat>>