Exemplo:
Citarlocal 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).
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Exemplo:
Citarlocal 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).
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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? ![]()
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.
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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?
É 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
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

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.
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

7 horas atrás, Gabriel Netto disse:Entendi.
Agora o negócio de elseif, não existe algo do tipo nos operadores ternários?
Não. É igual a c++ onde somente existe if e else, mas você pode fazer uma cadeia de verificações.
Citara = 5
Print (a < 0 and "menor" or a > 10 and "maior" or a == 5 and "igual" or "desconhecido")
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino

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
É 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.
info
Grupo: Conde
Registrado: 14/02/13
Posts: 702
Reputação: +196
Gênero: Masculino

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.
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

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. ![]()
info
Grupo: Barão
Registrado: 04/07/16
Posts: 242
Reputação: +100
Gênero: Masculino
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?