Say that you want to create a Lua table, and all its keys are valid lua identifiers. Then you can use the key=value syntax:
local niceTable = { I=1, like=1, this=1, syntax=1 }
If however your strings are not “identifiable”, then you have to use the ['key']=value syntax:
local operators = { ['*']="Why", ['+']="the", ['/']="brackets", ['?']='?' }
I’m a bit baffled about this. What are those brackets doing there? What do they mean?
They identify the contained string as a key in the resulting table. The first form, you could consider as equal to
The second form is equal to
The difference is purely syntactic sugar, except where the first one uses identifiers, so it has to follow the identifier rules, such as doesn’t start with a number and interpret-time constant, and the second form uses any old string, so it can be determined at runtime, for example, and a string that’s not a legal identifier. However, the result is fundamentally the same. The need for the brackets is easily explained.
Here, var is the identifier, not the variable.
Here, var is the variable, not the identifier.