Operador Ternário em lua

Gabriel Netto
em Programação

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gê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?

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gênero: Masculino

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

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gê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? D:

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

Bernardo

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 23/11/07Posts: 1523Gênero: Masculino

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.

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gê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?

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

dalvorsn

õ/
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 21/12/11Posts: 750Gênero: Masculino

É 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

"A covardia coloca a questão: É seguro? O comodismo coloca a questão: É popular? A etiqueta coloca a questão: é elegante? Mas a consciência coloca a questão, É correto? E chega uma altura em que temos de tomar uma posição que não é segura, não é elegante, não é popular, mas o temos de fazer porque a nossa consciência nos diz que é essa a atitude correta."

(Martin Luther King)

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gê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.

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gê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

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gê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? 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")

 

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."

Gabriel Netto

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/07/16Posts: 242Gê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 

Meu projeto OPEN-SOURCE de Pokétibia que será disponibilizado aqui no XTibia:

 

Vamos transformar o XTibia num ambiente melhor e de colaboração?
Se eu lhe ajudar ou postar algo interessante, voce me dá REP+,
e caso voce faça o mesmo, eu lhe dou o mesmo.

 

Bernardo

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 23/11/07Posts: 1523Gênero: Masculino

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

BananaFight

Allahu Akbar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 14/02/13Posts: 702Gê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. 

Poccnn

Enquanto houver armas no mundo, haverá guerra!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 07/03/16Posts: 1418Gê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. =):

"Deus é amor, mas matou 99,99999% de todos os seres viventes do mundo com o diluvio.

Deus é misericórdia, mas condena as pessoas ao tormento eterno do inferno.

Deus é pai, mas abandonou seus filhos a servidão.

Deus é vida, mas condenou a humanidade a morte.

Deus é o senhor. Senhor das guerras, da morte, do ódio.

 

Ninguém que ame a humanidade, mataria 99,99999% da população, não só de humanos, bem como dos demais animais, por amor. Isso não é amor, é doença, psicose de um sádico que gosta de ver sua 'criação' sofrer e ainda quer 'pagar' de misericordioso, de deus amor.

 

Não quero seu amor; não quero sua misericórdia, não quero ser seu filho, não quero sua vida, não quero que seja meu senhor.

Tu és um psicótico, doente, hipócrita, assassino; não me venha querer se passar por bondoso, amoroso, misericordioso."