2.3 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
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
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)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.
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
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
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
local ages = { [20]="John, Henry"; [21]="William"; } local errors = { [1]="File not Found"; [2]="Permission Denied" }