I’m trying on adding data to a table that I have within a class. No matter what I try, the table is nil.
TestClass = class()
function TestClass:init(x)
self.x = x
self.numbers={}
end
function TestClass:insertNumber(number)
table.insert(self.numbers,number)
end
--Main
function setup()
tests={}
table.insert(tests,TestClass)
table.insert(tests,TestClass)
tests[1]:insertNumber(5)
end
I get the error on the first table.insert
Mike
@mikeyleo Here’s how to do it.
--Main
function setup()
a=TestClass(12345)
b=TestClass(324)
a:insertNumber(25)
a:insertNumber(32)
a:insertNumber(12)
b:insertNumber(65)
b:insertNumber(72)
b:insertNumber(28)
a:print("a")
b:print("b")
end
TestClass = class()
function TestClass:init(x)
self.x = x
self.numbers={}
end
function TestClass:insertNumber(number)
table.insert(self.numbers,number)
end
function TestClass:print(val)
print("Class instance "..val)
print("value of x "..self.x)
print("table values")
for a,b in pairs(self.numbers) do
print(b)
end
end
@mikeyleo Your mistake was saying:
table.insert(tests,TestClass)
in the setup. The class function is setup so that when you use parentheses, then it calls the init function. Therefore, you have to insert a TestClass()
, which instantiates a new TestClass
that will have it’s own number table. So,
table.insert(tests,TestClass())
The parentheses did the trick. Thanks to both of you!