- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Michelle M. Fernandez
- 608字
- 2021-07-23 19:37:19
Tables
Tables are the proprietary data structure in Lua. They represent arrays, lists, sets, records, graphs, and so on. A table in Lua is similar to an associative array. Associative arrays can be indexed with values of any type, not just numbers. Tables implement all these structures efficiently. For example, arrays can be implemented by indexing tables with integers. Arrays do not have a fixed size, but grow as needed. When initializing an array, its size is defined indirectly.
Here is an example of how tables can be constructed:
1 a = {} -- create a table with reference to "a" 2 b = "y" 3 a[b] = 10 -- new entry, with key="y" and value=10 4 a[20] = "Monday" -- new entry, with key=20 and value="Monday" 5 print(a["y"]) -- 10 6 b = 20 7 print(a[b]) -- "Monday" 8 c = "hello" -- new value assigned to "hello" property 9 print( c ) -- "hello"
You will notice that in line 5, a["y"]
is indexing the value from line 3. In line 7, a[b]
uses a new value of variable b
and indexes the value of 20
to the string, "Monday"
. The last line, c
, is separate from the previous variables, and its only value is the string, "hello"
.
Passing a table as an array
Keys of a table can be consecutive integers, starting at 1. They can be made into an array (or a list):
colors = { [1] = "Green", [2] = "Blue", [3] = "Yellow", [4] = "Orange", [5] = "Red" } print(colors[4]) -- Orange
Another way of writing table constructors to build arrays in a faster and more convenient way that doesn't require writing out each integer key is shown here:
colors = {"Green", "Blue", "Yellow", "Orange", "Red"} print(colors[4]) -- Orange
Altering contents in a table
While working with tables, you can modify or remove the values already in it and also add new values to it. This can be accomplished using the assignment statement. The following example creates a table with three people and their favorite types of drink. You can make an assignment to change one person's drink, add a new person-drink pair to the table, and remove an existing person-drink pair:
drinks = {Jim = "orange juice", Matt = "soda", Jackie = "milk"} drinks.Jackie = "lemonade" -- A change. drinks.Anne = "water" -- An addition. drinks.Jim = nil -- A removal. print(drinks.Jackie, drinks.Anne, drinks.Matt, drinks.Jim) -- lemonade water soda nil
drinks.Jackie = "lemonade"
overwrites the original value of drinks.Jackie = "milk".
drinks.Anne = "water"
adds a new key and value to the table. The value of drinks.Anne
before this line would have been nil.
The value of drinks.Matt = "soda"
stays the same since there were no alterations to it.
drinks.Jim = nil
overwrites the original value of drinks.Jim = "orange juice"
with nil
. It removes the Jim
key from the table.
Populating a table
Ways to populate a table is to start with an empty table and add things to it one at a time. We'll use constructors, which are expressions that create and initialize tables. The simplest constructor is the empty constructor, {}
:
myNumbers = {} -- Empty table constructor for i = 1, 5 do myNumbers[i] = i end for i = 1, 5 do print("This is number " .. myNumbers[i]) end
The following are the results from the terminal:
--This is number 1 --This is number 2 --This is number 3 --This is number 4 --This is number 5
The preceding example shows that myNumbers = {}
is an empty table constructor. A for
loop is created and calls myNumbers[i]
5 times, starting from number 1. Each time it is called, it is incremented by 1 and then printed out.
- Functional Python Programming
- Mastering Entity Framework Core 2.0
- OpenDaylight Cookbook
- 摩登創(chuàng)客:與智能手機和平板電腦共舞
- 樂高機器人設計技巧:EV3結構設計與編程指導
- SQL語言從入門到精通
- Practical DevOps
- Python程序設計
- Android 應用案例開發(fā)大全(第3版)
- PySide GUI Application Development(Second Edition)
- App Inventor創(chuàng)意趣味編程進階
- Learning JavaScript Data Structures and Algorithms(Second Edition)
- SQL Server 2016 從入門到實戰(zhàn)(視頻教學版)
- Web程序設計:ASP.NET(第2版)
- Mastering jQuery Mobile