Duvida sobre "if not (..) then return end" Para que serve e quando usar?

Estou com uma duvida segundo “if not (…) then return end”, não entendi o que faz esse “return end”. Estava utilizando com um debounce da seguinte maneira:

local debounce = false

if not debounce then

end

Só que ao usar um else estava dando errado por causa de outros ifs. Então passei a utilizar o return end no final, mas isso só funcionou quando deixei o debounce como true, desta maneira:

local debounce = true

if not debounce then

end

não consegui entender o porque deste “return end”, o que ele faz e nem porque somente com o debounce sendo igual a TRUE funciona. Se puderem me explicar por favor. Obrigado!

1 Curtida

Nos exemplos abaixo, os hits só são detectados a cada 1 segundo.

local pode_tocar = true -- criando um debounce

part.Touched:Connect(function()
   if pode_tocar == true then -- verificando se pode tocar é TRUE
      pode_tocar = false -- "bloqueando" pode_tocar (não vai mais passar pelo if, já que foi mudado para false)

      -- código em questão aqui

      wait(1)
      pode_tocar = true -- agora vai voltar a passar pelo if
   end
end)
local pode_tocar = true -- criando um debounce

part.Touched:Connect(function()
   if not pode_tocar then -- verificando se pode_tocar é FALSE, ou seja, se está "bloqueado"
      return -- tendo em mente que 'return' termina a função para retornar um valor (no caso estamos retornando nil), nada que está abaixo do return vai executar, porque a função vai acabar aqui (lembrando que o return só vai executar se passar pelo if [se pode_tocar for false])
   end
   pode_tocar = false

   -- código em questão aqui
   
   wait(1)
   pode_tocar = true
end)

As duas formas fazem a mesma coisa, é questão de preferência.

1 Curtida

Entendi… Muito Obrigado!

1 Curtida