Difference between revisions of "Basic lua: Tables"

From The Official Visionaire Studio: Adventure Game Engine Wiki
m
Line 6: Line 6:
 
| class="i_arrow clickablecell" | [[basic_lua:_Functions|>]]
 
| class="i_arrow clickablecell" | [[basic_lua:_Functions|>]]
 
|}
 
|}
== Creating a table ==
+
== Creating Tables ==
 +
Below I am going to show you how to create various different types of tables/arrays.
 +
 
 +
=== Index Based Tables ===
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
Line 24: Line 27:
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_1.png|frameless|center|180px]]
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_1.png|frameless|center|180px]]
 
|}
 
|}
 
+
<hr>
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
Line 51: Line 54:
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_2.png|frameless|center|180px]]
 
</syntaxhighlight> || width="180px" style="vertical-align:middle;" | [[File:Basic_lua_(tables)_2.png|frameless|center|180px]]
 
|}
 
|}
 +
 +
=== Keyword Based Tables ===
  
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
! method 3: keywords & values !!
+
! keywords & values !!
 
|-
 
|-
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
Line 73: Line 78:
 
</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]]
 
|}
 
|}
 +
 +
=== Sub-Arrays ===
  
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
! method 4: auto generated index entries with sub-arrays containing keywords !!
+
! auto generated index entries with sub-arrays containing keywords !!
 
|-
 
|-
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
Line 90: Line 97:
 
|}
 
|}
  
 +
=== Keywords and Sub-Arrays ===
  
 
{| class="ts"
 
{| class="ts"
 
|-
 
|-
! method 5: keyword tables with keyword sub-arrays containing keywords!!
+
! keyword tables with keyword sub-arrays containing keywords!!
 
|-
 
|-
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">
 
| style="max-width:680px;" | <syntaxhighlight lang="lua">

Revision as of 02:02, 3 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 Tables

Below I am going to show you how to create various different types of tables/arrays.

Index Based Tables

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

Keyword Based Tables

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

Sub-Arrays

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

Keywords and Sub-Arrays

keyword tables with keyword sub-arrays containing 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 >