2011-08-25 50 views
1

代碼的結果時說,這一切:「企圖指數全球‘F’(函數值)」,試圖給一個函數附加到的loadFile

#tryModA.lua: 
f,err=loadfile("tryModB.lua") 
if not f then 
    print("F is nil!!! Err:"..err) 
else 
    f.fn=function (x) 
     print("x="..x) 
    end 
    f() 
end 

這裏是加載文件:

#tryModB.lua: 
fn("hello") 

錯誤:

lua: tryModA.lua:7: attempt to index global 'f' (a function value) 
stack traceback: 
    tryModA.lua:7: in main chunk 
    [C]: ? 

問題:爲什麼會發生?

loadfile()是不是真的返回一個函數對象,我可以附加另一個函數呢? PS。我來自JavaScript編程背景,它具有基於原型的對象。我認爲Lua具有相同的基於原型的對象。

回答

2

在Lua中,loadfile()返回一個函數(不是函數對象),函數只能被調用。 「附加」到你想要的功能是不可能的。

現在,Lua表是完全不同的故事,基於JavaScript的基於原型的概念可能適用於他們(我對JS不是很熟悉)。使代碼在這一點上工作的最簡單方法是使fn全局,即用fn = function...代替f.fn = function...,但這可能不是您想要的。

+0

感謝它現在的作品! – AlexStack

相關問題