Informática, perguntado por AstraDev, 8 meses atrás

Pessoal que faz jogos no rob (lox), é possivel usar o script "if print("oi") then alguma coisa"?

Obs : matéria fake, mas se puder e tiver um amigo que cria jogos no rob (lox), passe essa pergunta pra ele.

Soluções para a tarefa

Respondido por jonhacterdiscord
1

Resposta Direta: Sim, mas não vai executar o que está dentro do then

O jogo em sí usa Lua como linguagem, portanto quando passada uma função ao IF, o compilador não vai executar o que está dentro do "then", porque de uma forma ou outra a função não é um booleano Verdadeiro, mas vai executar o print("oi"), pois o IF não previne a execução da função fora do escopo then.

Um teste direto:

1. if print("Teste") then

2.     print("Deu certo")

3. end

>>> Teste

Aí você me pergunta "Porque não deu erro?", porque apesar de tudo, passar uma função ao IF é pedir para o compilador ler seu retorno, como eu falei lá em cima querendo ou não o valor não é Verdadeiro, é Nulo, pois print retorna valores Nulos.

Usando um else:

1. if print("Teste") then

2.    print("Deu certo")

3. else

4.    print("Oops")

5. end

>>> Teste

>>> Oops

Isso prova que Lua considera a função (com os parênteses) como se fosse o valor booleano Falso, pra dar verdadeiro simplesmente tire os argumentos.

Se quis printar o "oi", simplesmente coloque uma condição e passe a função pra dentro do escopo then.

Bom Código :)

Fonte: Wikibooks sobre Game Development

Anexos:

AstraDev: Valeu!
AstraDev: Eu já sabia que "if" e "then" não executavam funções, mas eu tava com preguiça

O script que eu tava pensando era:

if Baseplate.Lighting.Transparency = 1 then

print ("oi")

if print ("oi") then

Baseplate.Lighting.Transparency = 0
Perguntas interessantes