WO

Duvida: O Que É Retornar/return?

Por WolfyP, 05 de jan. de 2012 em Archived

otserv
tibia
script
9
1.4k
WolfyPW
05 de janeiro de 2012 às 21:49

Oi gente, sou iniciante em scripting e estou aqui porque me esbarrei com essa duvida.

 

Simplesmente não entendo a conotação da palavra "retornar" quando dita em relação a scripts de Lua. O mesmo para com a palavrinha "return" presente na maioria dos scripts, e além disso também não sei como usa-la. Já quebrei um pouco a cabeça pra tentar entender isso, mas tá dificil, acho que sou meio burrinho.

 

Em fim, se alguém puder me ajudar, ficarei grato!

 

 

 

happy.png

Editado Janeiro 5 por WolfyP

1391
05 de janeiro de 2012 às 22:04

Não sei explicar muito bem, mas não custa nada tentar.

 

Toda function (função) tem que retornar algum valor para ser "finalizada", logo quando chegamos no return da função, a mesma é finalizada.

 

Se alguém que sabe explicar melhor estiver lendo a minha explicação, favor postar a explicação.

WolfyPW
06 de janeiro de 2012 às 00:21
Não sei explicar muito bem, mas não custa nada tentar. Toda function (função) tem que retornar algum valor para ser "finalizada", logo quando chegamos no return da função, a mesma é finalizada. Se alguém que sabe explicar melhor estiver lendo a minha explicação, favor postar a explicação.

 

Sim mas porque existem scripts que não possuem Return no final?

 

E aquela coisa de:

 

End

 

return 1

 

End

 

Return 0

end

 

...

 

Não entendo porque dois returns.

1391
06 de janeiro de 2012 às 00:54

Não é obrigatório usar o Return, depende do que você quer fazer.

 

End

return 1

End

Return 0

end

 

Script de Action eu suponho, certo?

 

O return 1 está dentro de uma condicional (não tem como eu saber qual era o proposito da condicional) pra finalizar a função, enquanto o return 0 está fora da condicional, ou seja, caso o objetivo da condicional não seja atingido, tem um return finalizando a função.

 

Espero que você tenha entendido ;B

WolfyPW
06 de janeiro de 2012 às 02:54

Não é obrigatório usar o Return, depende do que você quer fazer.

 

End

return 1

End

Return 0

end

 

Script de Action eu suponho, certo?

 

O return 1 está dentro de uma condicional (não tem como eu saber qual era o proposito da condicional) pra finalizar a função, enquanto o return 0 está fora da condicional, ou seja, caso o objetivo da condicional não seja atingido, tem um return finalizando a função.

 

Espero que você tenha entendido ;B

 

 

Opa, me esclareceu algo.

 

Mas ainda não entendo porque não é obrigatório que já que todas funções/scripts precisam ser finalizados!

1391
06 de janeiro de 2012 às 12:34

Não to com tempo pra verificar no meu OT, mas se eu bem me lembro e não me engano, um script de uma função sem return não demonstrará determinada resposta ao char, porque os returns das funções executam determinado "comando".

Se você usa uma spell sem return, a spell até sai, mas a spell word não.

Uma alavanca sem return acho que não envia mensagem pro player também do tipo: sorry not possible.

WolfyPW
07 de janeiro de 2012 às 01:58

Não to com tempo pra verificar no meu OT, mas se eu bem me lembro e não me engano, um script de uma função sem return não demonstrará determinada resposta ao char, porque os returns das funções executam determinado "comando".

Se você usa uma spell sem return, a spell até sai, mas a spell word não.

Uma alavanca sem return acho que não envia mensagem pro player também do tipo: sorry not possible.

 

 

Man, obrigado. Me ajudou 60%.

 

Só não entendo porque você entende mas não sabe explicar.

1391
07 de janeiro de 2012 às 21:35

Entender eu entendo mas dai a explicar é meio difícil..

07 de janeiro de 2012 às 21:54

Seguinte cara, existem 8 valores em lua: function, thread, number, string, table, userdata, nil e boolean.

 

De acordo com o manual de lua oficial, http://www.lua.org/m.../pt/manual.html, (... O comando return é usado para retornar valores de uma função ou de um trecho (que nada mais é do que uma função). Funções e trechos podem retornar mais de um valor ...).

 

Vale lembrar que sempre que quando o comando return é usado, a função ou trecho é imediatamente parada de execução.

 

Vou dar um exemplo:

 

function teste()

return "isto é uma string"
end

print(teste())

 

ele vai imprimir:

 

>> isto é uma string

 

Quando o comando return está ausente, a função simplesmente retorna o valor nil.

 

Quando usam return 1 ou return 0 nas funções main do otserv, seria equivalente a usar return true e return false.

Editado Janeiro 7 por Demonbholder