Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
1

What kind of scope do return and break have[Solved]?

Asked by 5 years ago
Edited 5 years ago

Could someone explain the scope of break and return to me? I am interested to find out if they have different effects in different situations. For instance, break is often used in loops. What if I put break into a loop inside a loop? What if I put break into a loop inside of a function? Also, what kind of effects does break have on functions? I have often seen return used with functions but not so much loops. Can return be used in a loop? I have seen return break out of a function, does that mean it has farther reaching effects than break? Please help me understand this simple question. Thanks!

0
Solved by kingdom5 User#21908 42 — 5y
0
Scopity scope scope User#19524 175 — 5y

2 answers

Log in to vote
2
Answered by 5 years ago
Edited 5 years ago

For the return function, it returns a value from the function ex:

local function add (x,y)
    return(x + y)
end

local value = add(1,1)

print(value)

the variable value would be what is returned from the function add, which in turn gets printed. By default, functions in lua have a return function at the end of the function which returns nil

The return function can also have other uses, for example:

game:GetService("UserInputService").InputBegan:Connect(function(io,gpe)
    if gpe then return end
    if io.KeyCode == Enum.KeyCode.C then
        ...
    end
end)
--io is input object and gpe is game processed event

In this circumstance, the return function is ending the function abruptly if there is a game processed event, i.e. typing in chat.

The break function breaks a loop or function that it is contained within but no other loops or functions:

local function foo ()
    while true do
        break --breaks the while loop
    end
    print("ahh")
end
foo()

--------

for _,v in pairs workspace:GetChildren() do
    print(v)
    break --breaks the for loop
end

The break function can come in handy in multiple circumstances, for one, here is a snipet of code from StickMasterLuke's mad bloxxer.

while true do
    wait(5)
    contestants = {}
    for _,player in pairs(game.Players:GetPlayers()) do
        if player and player.Character then
            local hum = player.Character:FindFirstChild("Humanoid")
            if hum and hum.Health > 0  then
                table.insert(contestants,player)
            end
        end
    end
    if #contestants >= 3 then
        break
    else
        statustag.Value = "Waiting for Players"
        timertag.Value = -1
    end
end

This is a piece of code used to stop the main game loop from progressing any further until there are more than 3 people in the game. However,when there are more than three people in the game, the break function breaks the while loop and lets the rest of the main game loop run. Note that the break function doesn't work on the if statement the function is contained in,nor the for loop directly above it, but it does on the while loop containing it.

Addition: the scope of the return function is essentially the same as that of the break function Example:

local function foo(a,b)
    return goo(a * (a + 2), b/2)
end

local function goo (a,b)
    return a + b
end

print (foo(1,2))

Hopefully this helped your understanding about break and return a bit.

0
I know how they work and your answer did not clarify what my question was asking. I wanted to know the scope of the break and return functions. User#21908 42 — 5y
Ad
Log in to vote
0
Answered by 5 years ago

Return is something that gets you something from a function and break is something that stops a loop. They can be used inside each other like a function can have break if it has a loop in it and a loop can have return in a function.

0
he knows what they do, he's asking about the scope. for example, if there was a loop in a loop would breaking the inner loop also break the outer loop? ThatPreston 354 — 5y

Answer this question