2013-05-17 19 views
5

Nie mogę się doczekać, aby użyć zmiennej takiej jak "asdf", zamiast pisać funkcję nazwy, aby sprawdzić jej powrót (która zmienia się od czasu do czasu). Dlatego zmienna "asdf" powinna aktualizować jej wartość za każdym razem, gdy używamy (wywołujmy) jązadzwoń do funkcji Lua, pisząc jej nazwę (bez nawiasów)

Czy jest jakiś sposób, aby to zrobić w Lua, proszę?

asdf == getFunction() --we define it here 

    (...)   --some code 

if asdf < 10 then ... --here we call the variable (so it should get/update again the result of getFunction()) 

dzięki

+1

Czy nienawidzisz nawias tak dużo? –

+0

Lisp ma funkcję podobną do tej (makra symboli) – finnw

+0

@ user2308704 Z tego, co napisałeś w swoich komentarzach, wynika, że ​​próbujesz rozwiązać niewłaściwy problem. Może powinieneś przemyśleć to, co próbujesz zrobić? Jak pokazuje odpowiedź, robienie czegoś takiego nie jest niemożliwe, ale z pewnością jest niezwykłe i powinno być niepotrzebne w większości przypadków. – Cubic

Odpowiedz

12
--we define it here 
local asdf = function() 
    return getFunction() 
end 

--some code 
(...)    

--here we call the variable 
--(so it should get/update again the result of getFunction()) 
if asdf() < 10 then ... 

UPD:
Rozwiązanie bez nawiasu

--we define it here 
asdf = nil 
setmetatable(_G, {__index = 
    function(t, k) 
     if k == 'asdf' then 
     return getFunction() 
     end 
    end 
}) 

--some code 
(...) 

--here we call the variable 
--(so it should get/update again the result of getFunction()) 
if asdf < 10 then ... 
+1

tak, ale problem tutaj polega na tym, że musiałbym użyć tego nawiasu "asdf()", czy nie jest inaczej? = ( – user2308704

+0

@ user2308704 - Czy masz problem z nawiasu na klawiaturze? –

+0

@ user2308704 - A może tworzysz kilka DSL opartych na Lua? –

Powiązane problemy