I've been learning how to script this past week and I came across a lot of different terms but the one that confuses me the most is return. I've looked at multiple videos and websites to help me understand what returns are and what there used for but I'm still having trouble wrapping my head around it. If you can explain to me what returns are and how are they used in games I would really appreciate it.
What does 'return' do and how can I use it in my games?
2 answers
Functions aren't just reusable chunks of code. They can also "return" values. A (basic) example is this:
function addfive(n)
return n + 5
end
local ten = 10
local fifteen = addfive(10)
print(ten, fifteen)
Returning is not limited to numbers. You can return anything. How about this function that finds a part which has the color "Really red"?
function findRedPart()
for _, v in pairs(workspace:GetChildren()) do
if v.BrickColor.Name == 'Really red' then
return v
end
end
end
local redPart = findRedPart()
redPart:Destroy() -- i hate red parts!
Or this function that returns a table of red parts???
function findRedParts()
local redParts = {}
for _, v in pairs(workspace:GetChildren()) do
if v.BrickColor.Name == 'Really red' then
table.insert(redParts, v)
end
end
return redParts
end
local redParts = findRedParts() -- now i can have all the red parts and destroy them all
The oppurtunities are limitless...
Though I'm sure someone else is gonna explain it better than me, that's the best I can do. I hope this helped a little.
The return keyword can do either 1 of 2 things or both things:
Ends the current thread function
Makes a function return a given value
If you give return nothing to return, it'll just end the function:
script.Parent.Touched:Connect(function(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) then
print(hit.Parent.Name)
else
return -- The function would end here
print("nothing found")
end
end)
If you give return a value, it'll make the function return that value AND it will still end the function:
function GetTouchingPlayer(hit)
if game.Players:GetPlayerFromCharacter(hit.Parent) then
return hit.Parent.Name
print("player found") -- This will not print because the previous line ends the function
end
end
script.Parent.Touched:Connect(function(hit)
local var = GetTouchingPlayer(hit)
print(var)
end)
return cannot be used to end statements.
This discussion is preserved as it was. New answers, comments, and votes are closed.
