2.4 KiB
2.4 KiB
Tables
Spacing
- Either use one space after
{
and one before}
- Or neither of them
- Put spaces after the separator (if at all), never before
Examples:
local outer = { {"inner",1}, {"inner",2}, }
- Either put the entire table on one line
- Or don't put any items on the same line as the curly braces.
- Indent the items of the table
Examples:
local oneline = {'hello', 'world',}
lcoal multiline = {
'hello',
'world',
}
Sequence
- Use commas (
,
) to separate order-dependant items (list) - Use semicolons (
;
) to separate order-independant items (set)
Examples:
local ingredients = { "eggs"; "flour"; "milk"; }
local steps = { "mix", "fry", }
- Put a separator after the last element if more can logically follow
- Put no separator after the last element if none should logically follow
- Put no separator after the last element if external conditions must change for an additional item to be inserted.
Examples:
local color = { 0xff, 0x20, 0x40 }
local line = { {0, 0}, {0, 20}, {20, 20}, }
Map
- Place key-value pairs after the sequence
- Put a semantic separator after the last element as with pure sequences for open-ended sequences
- Or use a different separator to signal that no items should be added
Examples:
local pancakes = {
'mix', 'fry';
ingredients = { 'milk'; 'eggs'; 'flour' };
}
local pancakes = {
'milk'; 'eggs'; 'flour',
steps = {'mix', 'fry'};
}
- Use commas if the elements follow some logical order
- Use semicolons otherwise
- Apply same rules as with sequnces for separator after last element
Examples:
local point = {x=20, y=30}
local tasks = { monday = {'call steve'}, tuesday = {'fix kitchen door'}, }
local person = { name="John Doe"; age="Unknown" }
- Treat arbitrary integer keys as string keys
- Use square brackets for numbers acting as keys in a map
- Judge based on semantic meaning, not on technicalities
Examples:
local ages = { [20]="John, Henry"; [21]="William"; }
local errors = { [1]="File not Found"; [2]="Permission Denied" }