Ir para conteúdo
  • 0

Operador Ternário em lua


Gabriel Netto

Pergunta

E aí glr, blz? Espero que sim.

 

Queria saber se há operadores ternários em lua, e como usá-los. Me disseram que era com and e or, mas ql a ordem? Funciona igual à C++?

E uma dúvida qnt aos ternários msm. Eles sao bem vistos, como se fossem mais elegantes que uma estrutura de IF? Existe algo semelhante ao ELSE IF neles?

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 1

Exemplo:

Citar

local a, b = 1,2

print (a==2 and b or a)

Se 'a' for igual a 2, então ele imprimir a o valor de 'b' (2), caso contrário, imprimirá o valor de 'a' (1).

Link para o comentário
Compartilhar em outros sites

  • 0
16 horas atrás, Poccnn disse:

Exemplo:

Se 'a' for igual a 2, então ele imprimir a o valor de 'b' (2), caso contrário, imprimirá o valor de 'a' (1).

Entendi.

Agora o negócio de elseif, não existe algo do tipo nos operadores ternários? D:

Link para o comentário
Compartilhar em outros sites

  • 0

Não, operador ternário já é uma gambiarra por si só, se tiver mais de 1 condição ai tu arregaça a parada.

 

and/or ainda acho mais elegante que ?: mas ternário é feio, evite sempre que possível. Melhor fazer uma função mesmo ou if/else comum.

Link para o comentário
Compartilhar em outros sites

  • 0

 

34 minutos atrás, Bernardo disse:

Não, operador ternário já é uma gambiarra por si só, se tiver mais de 1 condição ai tu arregaça a parada.

 

and/or ainda acho mais elegante que ?: mas ternário é feio, evite sempre que possível. Melhor fazer uma função mesmo ou if/else comum.

 

Vish, então qual a utilidade disso? Deixar o parâmetro da função com uma verificação if else?

Link para o comentário
Compartilhar em outros sites

  • 0

É um recurso, usar ou não depende muito.

 

local count = 5

print("Voce possui ".. count .. " item".. (count > 1 and "s" or ""))

 

Um exemplo banal de um if ternario em lua

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Bernardo disse:

Não, operador ternário já é uma gambiarra por si só, se tiver mais de 1 condição ai tu arregaça a parada.

 

and/or ainda acho mais elegante que ?: mas ternário é feio, evite sempre que possível. Melhor fazer uma função mesmo ou if/else comum.

 

Fale por si só, operador ternário tem sim suas utilidades e pode sim simplificar muito um código, tudo depende da perspectiva que se vê, então se você não sabe usar é melhor evitar mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0
40 minutos atrás, dalvorsn disse:

É um recurso, usar ou não depende muito.

 

local count = 5

print("Voce possui ".. count .. " item".. (count > 1 and "s" or ""))

 

Um exemplo banal de um if ternario em lua

Sim, pra isso é bem útil. Tira 3 linhas inúteis do código se fosse fazer uma verificação if padrão

Link para o comentário
Compartilhar em outros sites

  • 0
7 horas atrás, Gabriel Netto disse:

Entendi.

Agora o negócio de elseif, não existe algo do tipo nos operadores ternários? D:

Não. É igual a c++ onde somente existe if e else, mas você pode fazer uma cadeia de verificações. 

Citar

a = 5

Print (a < 0 and "menor" or a > 10 and "maior" or a == 5 and "igual" or "desconhecido")

 

Link para o comentário
Compartilhar em outros sites

  • 0

É exatamente por esse exemplo do @Poccnn que eu falo que é gambiarra. Mais que 1 comparação e seu código fica uma zona, e sinceramente não tem como saber o que aquele código vai printar sem executar no console.

 

Eu só vi 1 caso onde um ternário não podia ser convertido pra um if/else, mas foi um caso muito específico em C++ que não se aplicaria em Lua.

Link para o comentário
Compartilhar em outros sites

  • 0
1 hora atrás, Bernardo disse:

É exatamente por esse exemplo do @Poccnn que eu falo que é gambiarra. Mais que 1 comparação e seu código fica uma zona, e sinceramente não tem como saber o que aquele código vai printar sem executar no console.

 

Eu só vi 1 caso onde um ternário não podia ser convertido pra um if/else, mas foi um caso muito específico em C++ que não se aplicaria em Lua.

 

 E é exatamente por isso que eu disse que se não sabe usar é melhor evitar, eu consigo ler ternário sem nem um problema e consigo entender exatamente oque esta sendo verificado e qual vai ser o resultado da verificação. 

Link para o comentário
Compartilhar em outros sites

  • 0

O bernardo deva ter fobia com ternario em lua.

Acho que ele não sabe usar ou ficou puto com o uso do ternario e resolveu se revoltar contra ele. =):

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...