Ir para conteúdo
  • 0

Mistérios do .Lua...


BananaFight

Pergunta

Alguns ja devem ter percebido porem não entendido, Mas este pequeno exemplo pode ser considerado um bug da linguagem .lua.



local table = {number1 = 1, number2 = 2}

for k, v in pairs(table) do
if k == "number1" then
print(1)
else
print(2)
end
end

o output desse script é :



1
2


Isso ocorre porque ao invez de mudar automaticamente o valor de "k" para seu correspondente na tabela, ele primeiro retorna "k" com um valor real e compara com "number1" retornando falso e entrando dentro do if, e depois ele entra dentro da tabela atribui o devido valor ao "k" e retorna true, porque dentro da tabela existe um correspondente ao "number1"...



Esse bug pode confundir usuários da linguagem sem experiencia, e deixar uma duvida enorme do porque ele funciona / da erro ao mesmo tempo...


Editado por BananaFight
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

n tem nenhum bug...

 

pairs e ipairs retornam index(no caso k),valor(no caso v), alem é claro da função iteradora

 

o segundo retorna no "else" porque o index é a string "number2" , que n é igual a string "number1"

 

lembrado que

table ={number1 = 1}

é mesma coisa que

table = {["number1"] = 1}

Editado por lordbug99
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...