Jump to content

Question

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 to comment
https://xtibia.com/forum/topic/241887-operador-tern%C3%A1rio-em-lua/
Share on other sites

12 answers to this question

Recommended Posts

  • 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:

  • 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.

  • 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?

  • 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.

  • 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

  • 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")

 

  • 0
9 horas atrás, Poccnn disse:

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

 

Sim, entendi, valeu mano sz 

  • 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.

  • 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. 

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...