2013-05-17 8 views
5

Non vedo l'ora di utilizzare una variabile come "asdf" invece di scrivere la funzione nome per controllarne il ritorno (che cambia di tanto in tanto). Ecco perché la variabile "asdf" dovrebbe aggiornarne il valore ogni volta che la usiamo (chiamata)chiama una funzione Lua semplicemente scrivendo il suo nome (senza parentesi)

C'è un modo per farlo a Lua, per favore?

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

grazie

+1

odi parentesi così tanto? –

+0

Lisp ha una funzione come questa (macro simbolo) – finnw

+0

@ user2308704 Da quanto hai indicato nei commenti fino ad ora, sembra che tu stia cercando di risolvere il problema sbagliato. Forse dovresti ripensare a quello che stai cercando di fare? Come dimostra la risposta, fare qualcosa del genere non è "impercettibile" di per sé, ma è certamente insolito e non dovrebbe essere necessario nella maggior parte delle circostanze. – Cubic

risposta

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:
soluzione senza parentesi

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

sì, ma il problema qui è che dovrei usare quelle parentesi "asdf()", non è un altro modo? = ( – user2308704

+0

@ user2308704 - Hai un problema con la parentesi sulla tastiera? –

+0

@ user2308704 - O forse stai facendo qualche DSL basato su Lua? –

Problemi correlati