Difference between revisions of "Basic lua: Tables"

From The Official Visionaire Studio: Adventure Game Engine Wiki
Line 72: Line 72:
 
print("\n...but as you can see it does not necessarily return them in the order they were created")
 
print("\n...but as you can see it does not necessarily return them in the order they were created")
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_3.png|frameless|center|180px]]
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_3.png|frameless|center|180px]]
 +
|}
 +
 +
{| class="ts"
 +
|-
 +
! method 4: auto generated index entries with sub-arrays containing keywords !!
 +
|-
 +
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 +
local t = {
 +
 +
{x = 100, y = 300},
 +
{x = 200, y = 111}
 +
 +
}
 +
 +
print("x = " .. t[1].x .. ", y = " .. t[1].y)
 +
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_4.png|frameless|center|180px]]
 +
|}
 +
 +
 +
{| class="ts"
 +
|-
 +
! method 5: keyword tables with sub-arrays containing keywords containing even more keywords !!
 +
|-
 +
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 +
local t_texts = {
 +
 +
["English"] = {
 +
    {txt = "hello world!"},
 +
    {txt = "goodbye world!"}
 +
},
 +
 +
["German"] = {
 +
  {txt = "hallo welt!"},
 +
  {txt = "auf wiedersehen welt"}
 +
}
 +
 +
}
 +
 +
print( t_texts["English"][1].txt )
 +
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_5.png|frameless|center|180px]]
 
|}
 
|}
  

Revision as of 22:13, 2 September 2022

Tables are one of the features of Lua script, that make the scripting language so dynamic & easy to use, as they allow us to easily create tables, insert, remove & sort data. Tables are often comprised of arrays that usually involve keywords - or an index number - & a value. Tables can be accessed using multiple different methods.

< Index >

Creating a table

method 1: automatically generated index values
local t = {1, 2, 3, 4, 5, "six", 7, "ate", 9} -- automatically assigns an index number to each value starting from 1
local str = "" -- empty string

for i = 1, #t do -- for 1 to table total, print value of index number
 str = str .. t[i] -- add current table index value to existing text data in the str variable
 if i < #t then str = str .. ", " end -- if i is less than table entry total then insert ", " into the str variable
end

print("table data: " .. str) -- print the table data
print( "table entry total: " .. #(t) ) -- print total of table entries
Basic lua (tables) 1.png
method 2: manually created index values
local t = {

[1] = 1,
[2] = "two",
[3] = 3,
[4] = 2 * 2,
[5] = "five",

}

local str = "" -- empty string

for i = 1, #t do -- for 1 to table total, print value of index number
 str = str .. t[i] -- add current table index value to existing text data in the str variable
 if i < #t then str = str .. ", " end -- if i is less than table entry total then insert ", " into the str variable
end

print("table data: " .. str) -- print the table data
print( "table entry total: " .. #(t) ) -- print total of table entries
Basic lua (tables) 2.png
method 3: keywords & values
local t = {

["hello world"] = "hello world",
example = "this also works",
camelCaseExample = "this will also work",
snake_case_example = "as will this"

}

for k, v in pairs(t) do
  print(k ..": " .. v)
end

print("\n...but as you can see it does not necessarily return them in the order they were created")
Basic lua (tables) 3.png
method 4: auto generated index entries with sub-arrays containing keywords
local t = {

{x = 100, y = 300},
{x = 200, y = 111}

}

print("x = " .. t[1].x .. ", y = " .. t[1].y)
Basic lua (tables) 4.png


method 5: keyword tables with sub-arrays containing keywords containing even more keywords
local t_texts = {

["English"] = {
    {txt = "hello world!"},
    {txt = "goodbye world!"}
},

["German"] = {
  {txt = "hallo welt!"},
  {txt = "auf wiedersehen welt"}
}

}

print( t_texts["English"][1].txt )
Basic lua (tables) 5.png
< Index >