delete
Updateddelete expr
Cleans the value up, whatever it is: an Instance is destroyed, an RBXScriptConnection and a SignalConnection disconnect, a thread is cancelled, a function is called, a Scope closes, a Signal is destroyed, and any other table takes its Destroy, Disconnect, destroy, or disconnect method; the Roblox spelling wins when a table has both. The std names that shape Deletable. delete t.field and delete t[key] then set the slot to nil, so the table holds nothing destroyed.
What a scope holds for an Instance goes first: scope:add(connection, part) names the Instance an item belongs to, and delete part disconnects the item before the Destroy, so no handler runs against an Instance that is half gone.
delete takes no timer. destroy x after n is the one that waits.
The word is also free as a name. delete before a name is the statement; delete(x), delete = f, and t.delete read the Luau way.
