If I were to keep the players in a game within a table that is refreshed each game loop iteration, could I clear that table by simply using the line “table = {}”? Or would that just add nothing to table and keep the current values.
Yes it would have the behavior of clearing the table, but beware what it actually does is create a new one in the process and assign it to your variable.
local a = {1, 2, 3}
a = {3, 2, 1} -- these are 2 different tables!
local b = {0, 2, 4}
print(b == {0, 2, 4}) -- false, {} creates a new table
As long as you’re not relying on any weird behavior/comparison, and updating your references to the table after you use var = {}
, you will be fine and it will essentially “clear” the table.
Sounds good, thank you! The player table becomes useless outside of that one round of the game, so creating a new one works perfectly. Thanks for the quick response.
What do you mean by “updating your references to the table”? Kinda curious since I want to make sure that if I ever wanted to use this method I’d know how to do it correctly.
local a = {3, 2, 1}
local b = a
In this example, both a
and b
are references to the same table; they are 2 variables pointing to the same object.
As such,
a[1] = 0
print(b[1]) --> 0
This is because we’re accessing the object there with []
. However, if you did…
a = {}
print(b[1]) --> 0
You still get 0 because you only updated what the variable a
refers to, but b
is still pointing to the same old table. Because of this, if you refer to a table in multiple places and forget to update the references (for example by doing b = a
again) you may end up in a situation where what you think is the same table as another might not be, or vice versa, leading to tricky code bugs.
Thanks for the clear clarification and examples. Definitely something I’ll keep an eye out for in my code