lua怎麼獲取函式的upvalue

2021-03-03 21:50:05 字數 851 閱讀 3335

1樓:great雨點

lua中的函式是一階型別值

(first-class value),定義函式就象建立普通型別值一樣(只不過函式型別值的數專

據主要是一條條指屬

令而已),所以在函式體中仍然可以定義函式。假設函式f2定義在函式f1中,那麼就稱f2為f1的內嵌(inner)函式,f1為f2的(enclosing)函式,和內嵌都具有傳遞性,即f2的內嵌必然是f1的內嵌,而f1的也一定是f2的。內嵌函式可以訪問函式已經建立的所有區域性變數,這種特性便是所謂的詞法定界(lexical scoping),而這些區域性變數則稱為該內嵌函式的外部區域性變數(external local variable)或者upvalue(這個詞多少會讓人產生誤解,因為upvalue實際指的是變數而不是值)。

我用lua指令碼寫程式時,出現了下面的錯誤:attempt to index field 'size' (a nil value)

2樓:匿名使用者

錯誤已經寫的很明顯了

你使用了一個空值來索引一個table

比如 你執行一下這段**你就懂了

tab = {}

tab.size = {}

print(tab.size.a)

tab.size = nil

print(tab.size.a)

第一次輸出nil

第二次就出現了和你一樣的錯誤

因為size 本身不是一個table 而你以訪問table的方式來訪問這個值為nil的size

所以就出現這個問題了

解決的方法是 你確認一下 在之前的函式裡是否初始化了這個size 或者是 把它置成nil了

lua指令碼獲取web文字框的值,並寫入到檔案中去

lua 的語法比較簡單 來,學習自起來也比較省力,bai但功能卻並du不弱。所zhi以,我只簡單的歸納一下daolua的一些語法規則,使用起來方便好查就可以了。估計看完了,就懂得怎麼寫lua程式了。在lua中,一切都是變數,除了關鍵字。lua指令碼讀入文字檔案以及刪除第一行文字 我直接給你個讀出每一...

lua語言的跳轉指令怎麼用,lua語言的跳轉指令怎麼用

lua中的標籤使用雙冒號。print abcd print 1234 b if io.read a thengoto a else goto b end以上 在輸入a時重新輸出。注意lua goto 只能用於函式之內跳轉。可以從巢狀迴圈內跳出,但是不能在迴圈之間跳轉。跳轉只能用於指令碼模式下不能用在...

lua函式有沒有辦法獲得呼叫自身的檔案的路徑

你可以考慮用debug庫幫助你 for i,v in pairs debug.getinfo 2 do print i,v end但是我不是很推薦這個庫 這個庫的很多函式效率很低 而且破壞了域的概念 你應該通過許多其他途徑對這個函式進行維護 其中2表示當前棧的層次 因為你是兩重的函式呼叫,所以是上一...