mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
Update 20221104.7 ⭐️ How to iterate over tables in Lua.md
This commit is contained in:
parent
9c1b210970
commit
b0ee84c902
@ -19,30 +19,28 @@ In the [Lua][1] programming language, an array is called a table. A table is use
|
||||
To create a table in Lua, you instantiate the table with an arbitrary name:
|
||||
|
||||
```
|
||||
mytable ={}
|
||||
mytable = {}
|
||||
```
|
||||
|
||||
There are different ways you can structure your data in a table. You could fill it with values, essentially creating a list (called a list in some languages):
|
||||
|
||||
```
|
||||
mytable ={'zombie','apocalypse'}
|
||||
mytable = {'zombie','apocalypse'}
|
||||
```
|
||||
|
||||
Or you could create an associated array (called a map or dictionary in some languages). You can add arbitrary keys to the table using dot notation. You can also add a value to that key the same way you add a value to a variable:
|
||||
|
||||
```
|
||||
myarray ={}
|
||||
|
||||
myarray.baz='happy'
|
||||
|
||||
myarray.qux='halloween'
|
||||
myarray = {}
|
||||
myarray.baz = 'happy'
|
||||
myarray.qux = 'halloween'
|
||||
```
|
||||
|
||||
You can add verification with the `assert()` function:
|
||||
|
||||
```
|
||||
[assert][2](myarray.baz=='happy','unexpected value in myarray.baz')
|
||||
[assert][2](myarray.qux=='halloween','unexpected value in myarray.qux')
|
||||
[assert][2](myarray.baz == 'happy', 'unexpected value in myarray.baz')
|
||||
[assert][2](myarray.qux == 'halloween', 'unexpected value in myarray.qux')
|
||||
```
|
||||
|
||||
You now have two tables: a list-style `mytable` and an associative array-style `myarray`.
|
||||
@ -53,10 +51,8 @@ Lua's `pairs()` function extracts key and value pairs from a table.
|
||||
|
||||
```
|
||||
print('pairs of myarray:')
|
||||
for k,v in pairs(myarray)do
|
||||
|
||||
print(k,v)
|
||||
|
||||
for k, v in pairs(myarray) do
|
||||
print(k, v)
|
||||
end
|
||||
```
|
||||
|
||||
@ -64,9 +60,7 @@ Here's the output:
|
||||
|
||||
```
|
||||
pairs of myarray:
|
||||
|
||||
baz happy
|
||||
|
||||
qux halloween
|
||||
```
|
||||
|
||||
@ -74,10 +68,8 @@ If there are no keys in a table, Lua uses an index. For instance, the `mytable`
|
||||
|
||||
```
|
||||
print('pairs of mytable:')
|
||||
for k,v in pairs(mytable)do
|
||||
|
||||
print(k,v)
|
||||
|
||||
for k, v in pairs(mytable) do
|
||||
print(k, v)
|
||||
end
|
||||
```
|
||||
|
||||
@ -94,10 +86,8 @@ To account for the fact that tables without keys are common, Lua also provides t
|
||||
|
||||
```
|
||||
print('ipairs of mytable:')
|
||||
for i,v in ipairs(mytable)do
|
||||
|
||||
print(i,v)
|
||||
|
||||
for i, v in ipairs(mytable) do
|
||||
print(i, v)
|
||||
end
|
||||
```
|
||||
|
||||
@ -111,13 +101,10 @@ The output is, in this case, the same as the output of `pairs`:
|
||||
However, watch what happens when you add a key and value pair to `mytable`:
|
||||
|
||||
```
|
||||
mytable.surprise='this value has a key'
|
||||
|
||||
mytable.surprise = 'this value has a key'
|
||||
print('ipairs of mytable:')
|
||||
for i,v in ipairs(mytable)do
|
||||
|
||||
print(i,v)
|
||||
|
||||
for i, v in ipairs(mytable) do
|
||||
print(i, v)
|
||||
end
|
||||
```
|
||||
|
||||
@ -132,10 +119,8 @@ The key and value pair, however, have been stored in the table:
|
||||
|
||||
```
|
||||
print('pairs of mytable:')
|
||||
for k,v in ipairs(mytable)do
|
||||
|
||||
print(k,v)
|
||||
|
||||
for k, v in ipairs(mytable) do
|
||||
print(k, v)
|
||||
end
|
||||
```
|
||||
|
||||
@ -144,7 +129,6 @@ The output:
|
||||
```
|
||||
1 zombie
|
||||
2 apocalypse
|
||||
|
||||
surprise this value has a key
|
||||
```
|
||||
|
||||
@ -154,21 +138,13 @@ You don't have to iterate over a table to get data out of it. You can call arbit
|
||||
|
||||
```
|
||||
print('call by index:')
|
||||
|
||||
print(mytable[2])
|
||||
|
||||
print(mytable[1])
|
||||
|
||||
print(myarray[2])
|
||||
|
||||
print(myarray[1])
|
||||
|
||||
print('call by key:')
|
||||
|
||||
print(myarray['qux'])
|
||||
|
||||
print(myarray['baz'])
|
||||
|
||||
print(mytable['surprise'])
|
||||
```
|
||||
|
||||
@ -176,21 +152,14 @@ The output:
|
||||
|
||||
```
|
||||
call by index:
|
||||
|
||||
apocalypse
|
||||
|
||||
zombie
|
||||
|
||||
nil
|
||||
|
||||
nil
|
||||
|
||||
call by key:
|
||||
|
||||
halloween
|
||||
|
||||
happy
|
||||
|
||||
this value has a key
|
||||
```
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user