I see in a few scripts (And I mean VERY few) What does this mean?, Is it like a table.insert() or a Data command.
Data={}
Data.Test=function()
print('Hello world!')
end
Data.Test()
I see in a few scripts (And I mean VERY few) What does this mean?, Is it like a table.insert() or a Data command.
Data={}
Data.Test=function()
print('Hello world!')
end
Data.Test()
In most languages, list like objects are called either lists or arrays (other names include vectors).
Lua's lists differ in that they are actually implimented as a different data structure called a hashtable.
For example, consider this simpler code:
tab = {}
tab[1] = 3
tab[2] = 5
tab[3] = 7
print( tab[2 + 1] ) -- 7
Here, we assign values to particular keys. The key is the value in the square brackets.
While lists use only the numbers 1, 2, 3, ... as keys, you can use any value as a key (except nil):
othertab = {}
tab = {}
tab[othertab] = "Hi"
print( tab[othertab] ) -- "hi"
print( tab[ {} ] ) -- nil
-- since `{}` and `othertab` refer
-- to different objects
print( tab[1] ) -- nil
-- since `1` and `othertab` are
-- different things
In fact, table.insert(t,v) more or less is sugar for t[#t + 1] = v.
So what about those . dots?
tab.prop is sugar for tab["prop"], that is, using a string literal as the key.
Thus
Data.Test = function()
end
is storing a function value to Data["Test"] (which you can also call Data.Test)
Perhaps this is clearer:
function addNums(a,b)
return a + b
end
print(addNums(5,9)) -- 14
summer = addNums
print( summer( 5, 9 ) ) -- 14
data = {}
table.insert( data, addNums )
print( data[1] ) -- function 123456789
print( data[1](5, 9) ) -- 14
other = {}
other[1] = addNums
print( other[1](5, 9) ) -- 14
other["cat"] = addNums
print( other["cat"](5, 9) ) -- 14
other.dog = addNums
print( other.dog(5, 9) ) -- 14
This discussion is preserved as it was. New answers, comments, and votes are closed.