PDA

View Full Version : Table little help


prouty
30-06-2007, 05:48 PM
Hello,

I have more Table.

Exemple:


Test_Table_Test1 = {};
Test_Table_Test1[1] = {"Value1","Value2"};
Test_Table_Test1[2] = {"VValue1","VValue2"};
Test_Table_Test1[3] = {"VVValue1","VVValue2"};

Test_Table_Retest1 = {};
Test_Table_Retest1[1] = {"ValueX1","ValueX11"};
Test_Table_Retest1[2] = {"ValueX2","ValueX21"};
Test_Table_Retest1[3] = {"ValueX2","ValueX31"};

Test_Table_Othertest1 = {};
Test_Table_Othertest1[1] = {"vValueX1","vValueX11"};
Test_Table_Othertest1[2] = {"vValueX2","vValueX21"};
Test_Table_Othertest1[3] = {"vValueX3","vValueX31"};
Etc...



And i want make a function for read this table but with just one part of tablename in arg.

i have try


function Read_Table()
Arg1 = "Retest";
Read_Table2(Arg1);
end

function Read_Table2(arg)
local new_name = getglobal("Test_Table_"..arg);
DEFAULT_CHAT_FRAME:AddMessage(new_name[2][1], 1.0, 1.0, 0, 0);
end


But i have no return on chat frame in game, and i dont know how to make.

Thanks for your help

ps: Sorry for my english

Duugu
30-06-2007, 09:24 PM
That's now possible ... or at least it wouldn't be simple .

How about this:

Test_Table = {};
Test_Table["Test1"] = {};
Test_Table["Test1"][1] = {"Value1","Value2"};
Test_Table["Test1"][2] = {"VValue1","VValue2"};
Test_Table["Test1"][3] = {"VVValue1","VVValue2"};

Test_Table["Retest1"] = {};
Test_Table["Retest1"][1] = {"ValueX1","ValueX11"};
Test_Table["Retest1"][2] = {"ValueX2","ValueX21"};
Test_Table["Retest1"][3] = {"ValueX2","ValueX31"};

Test_Table["Othertest1"] = {};
Test_Table["Othertest1"][1] = {"vValueX1","vValueX11"};
Test_Table["Othertest1"][2] = {"vValueX2","vValueX21"};
Test_Table["Othertest1"][3] = {"vValueX3","vValueX31"};
Etc...

JaedxRapture
01-07-2007, 02:31 AM
It's bad practice to format your tables that way. List all your table entires at the same time:
Test_Table_Test1 = {
{ -- Don't need to list "[1]" BTW.
"Value1",
"Value2"
},
{
"VValue1",
"VValue2"
},
{
"VVValue1",
"VVValue2"
},
} -- Ending semicolons are a waste. They are used to split up code in single-line scripts, which this isn't, and are stripped away before the code is processed anyway.

Edit: Let me explain here. By listing the table and then each entry individually, you waste CPU usage. Each new entry listed your way is another seperate table lookup, which is bad CPU-wise. Listing them all at once my way saves that precious CPU time.


You can have a code run the full length of a table by using a loop like this:
for key,value in pairs(Test_Table_Test1) do
DEFAULT_CHAT_FRAME:AddMessage(value)
end

A smarter formatted code which looks neater might be:
for _,message in pairs(Test_Table_Test1) do -- Unused variables are usually set to "_".
DEFAULT_CHAT_FRAME:AddMessage(message)
end



Edit: Finished code:
Test_Table_Test1 = {
{
"Value1",
"Value2",
},
{
"VValue1",
"VValue2",
},
{
"VVValue1",
"VVValue2",
},
}

Test_Table_ReTest1 = {
{
"Value1",
"Value2",
},
{
"VValue1",
"VValue2",
},
{
"VVValue1",
"VVValue2",
},
}

Test_Table_OtherTest1 = {
{
"Value1",
"Value2",
},
{
"VValue1",
"VValue2",
},
{
"VVValue1",
"VVValue2",
},
}


function ReadTable(table)
for _,message in pairs(table) do
DEFAULT_CHAT_FRAME:AddMessage(message)
end
end

And you call the function like this: "ReadTable(Test_Table_Test1)".