Values and Types
Key Tables
Tables can also map names to values and read them with a key expression.
table key
A table key can be a string, letting code look up values by name.
Key Tables
key_tables.lua
Replay: real traced execution (multi-file project)
local item = "apple"
local price = ({apple = 2, banana = 3, pear = 4})[item]
local label = item .. ":" .. price
print("item=" .. item)
print("price=" .. price)
print("label=" .. label)
local item = "banana"
local price = ({apple = 2, banana = 3, pear = 4})[item]
local label = item .. ":" .. price
print("item=" .. item)
print("price=" .. price)
print("label=" .. label)
local item = "pear"
local price = ({apple = 2, banana = 3, pear = 4})[item]
local label = item .. ":" .. price
print("item=" .. item)
print("price=" .. price)
print("label=" .. label)
item ← apple, price ← 2, label ← apple:2
1local item→ apple = "apple" --@item="banana", "pear"2local price→ 2 = ({apple = 2, banana = 3, pear = 4})[item]23local label→ apple:2 = itemapple .. ":" .. price245print("item=" .. itemapple)6print("price=" .. price2)7print("label=" .. labelapple:2)outputitem=apple price=2 label=apple:2
item ← banana, price ← 3, label ← banana:3
1local item→ banana = "banana"2local price→ 3 = ({apple = 2, banana = 3, pear = 4})[item]33local label→ banana:3 = itembanana .. ":" .. price345print("item=" .. itembanana)6print("price=" .. price3)7print("label=" .. labelbanana:3)outputitem=banana price=3 label=banana:3
item ← pear, price ← 4, label ← pear:4
1local item→ pear = "pear"2local price→ 4 = ({apple = 2, banana = 3, pear = 4})[item]43local label→ pear:4 = itempear .. ":" .. price445print("item=" .. itempear)6print("price=" .. price4)7print("label=" .. labelpear:4)outputitem=pear price=4 label=pear:4
Follow the Lookup
itemstarts asapple.- The lookup table stores apple
2, banana3, and pear4. - The price for
appleis2. labelbecomesapple:2.- The program prints
item=apple,price=2, andlabel=apple:2. | item | price | label | | --- | --- | --- | | apple | 2 | apple:2 | | banana | 3 | banana:3 | | pear | 4 | pear:4 |
Exercise: key_tables.lua
Reproduce label=apple:2, then use banana and pear to predict each price and label.