Comparar funções

Galera, não da para comparar funções? Se não, por que?

1 Curtida

Mais ou menos. Funções são espaços na memória, se você printar uma função(sem chamar), vai mostrar o “código” dela:

local function teste()
	return true
end

print(teste)
--> function: 00B2BE80

Mesmo que uma função faça exatamente a mesma coisa que outra, não será igual, porque elas possuem códigos diferentes:

local function teste()
	return true
end

local function teste2()
	return true
end

print(teste == teste2)
-- false

print(teste, teste2)
-- function: 00B9BD60	function: 00B9BD80

Por tanto, você pode comparar a mesma função:

local function teste()
	return true
end

print(teste == teste)
-- true

O mesmo acontece com tabelas.

1 Curtida

Então apenas a mesma função ou tabela?

1 Curtida

Exatamente. Não tem como comparar se uma função faz a mesma coisa que outra ou se uma tabela tem os mesmos dados que outra, apenas se a identificação delas são as mesmas ou seja, se é a exata mesma função/tabela.