2013-05-17 8 views
5

Ich freue mich darauf, eine Variable wie "asdf" zu verwenden, anstatt die name-Funktion zu schreiben, um ihre Rückkehr zu überprüfen (die sich hin und wieder ändert). Deshalb sollte die "asdf" -Variable ihren Wert jedes Mal aktualisieren, wenn wir sie verwenden (anrufen)rufen Sie eine Lua-Funktion auf, indem Sie einfach ihren Namen schreiben (ohne Klammern)

Gibt es eine Möglichkeit, dies in Lua zu tun, bitte?

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

dank

+1

Haben Sie Klammer so viel Hass? –

+0

Lisp hat eine Funktion wie diese (Symbolmakros) – finnw

+0

@ user2308704 Von dem, was Sie bisher in Ihren Kommentaren angegeben haben, scheint es, als ob Sie versuchen, das falsche Problem zu lösen. Vielleicht solltest du überdenken, was auch immer du versuchst zu tun? Wie die Antwort zeigt, ist es nicht einfach, so etwas zu tun, aber es ist sicherlich ungewöhnlich und sollte in den meisten Fällen unnötig sein. – Cubic

Antwort

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:
Lösung ohne Klammer

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

ja, aber das Problem hier ist, dass ich diese Klammer "asdf()" verwenden müsste, ist nicht anders? = ( – user2308704

+0

@ user2308704 - Haben Sie ein Problem mit Klammern auf Ihrer Tastatur? –

+0

@ user2308704 - Oder vielleicht machen Sie einige Lua-basierte DSL? –

Verwandte Themen