Skip to content

Commit 3ff4d1d

Browse files
authored
New DeepClone code snippet (#847)
## Changes <!-- Please summarize your changes. --> <!-- Please link to any applicable information (forum posts, bug reports, etc.). --> I've made a bit more documented of a code snippet to help scripters navigate their way through it, considering not everyone viewing would be experienced. This take on the deep clone snippet also gives a faster result, meaning the code is ran faster and you get your value returned faster. OLD: **0.0000051** (os.clock) NEW: **0.0000034** (os.clock) The difference may be small but definitely in some cases noticeable and useful. This is due to the usage of the generalized iterator. Also simplifying the code with ternary operators. But, I believe my take on this new snippet would definitely be faster, and also educate other scripters better, even spiking their curiosity in code simplification if not familiar with ternary operators. All in short, I believe It's a great take. https://create.roblox.com/docs/luau/tables#deep-clones https://devforum.roblox.com/t/ternary-like-operation-in-lua/834254 ## Checks By submitting your pull request for review, you agree to the following: - [x] This contribution was created in whole or in part by me, and I have the right to submit it under the terms of this repository's open source licenses. - [x] I understand and agree that this contribution and a record of it are public, maintained indefinitely, and may be redistributed under the terms of this repository's open source licenses. - [x] To the best of my knowledge, all proposed changes are accurate. ---------
1 parent 8199ac8 commit 3ff4d1d

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

content/en-us/luau/tables.md

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -291,14 +291,19 @@ local clone = table.clone(original)
291291
To copy a more complex table with nested tables inside it, you'll need to use a recursive function similar to the following:
292292

293293
```lua
294-
local function deepCopy(original)
294+
-- The function used for deep copying a table
295+
local function deepCopy(original)
296+
-- Define the new table for the copy
295297
local copy = {}
296-
for k, v in pairs(original) do
297-
if type(v) == "table" then
298-
v = deepCopy(v)
299-
end
300-
copy[k] = v
298+
299+
-- Loop through the original table to clone
300+
for key, value in original do
301+
-- If the type of the value is a table, deep copy it to the key (index)
302+
-- Else (or) the type isn't a table, assign the default value to the index instead
303+
copy[key] = type(value) == "table" and deepCopy(value) or value
301304
end
305+
306+
-- Return the finalized copy of the deep cloned table
302307
return copy
303308
end
304309
```

0 commit comments

Comments
 (0)