lua upvalue有什麼用,lua 怎麼獲取函式的upvalue

2021-04-21 02:39:13 字數 1796 閱讀 6200

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指令碼寫程式出現報錯:attempt to call method 'settext' (a nil value),求解決方案

3樓:

沒用過cocos2dx2.2.5, 但能肯定沒有找到settext()函式, settext()所在的庫不在package.path 和package.cpath搜尋範圍中

【lua問題】attempt to call field 'extra' (a nil value)

4樓:錯落二人組

不要self.extra,直接extra就行……self表中沒有extra這個鍵值,自然會報錯

老實說個人非常不推薦

回這種答寫法,難看而且不好維護;除非是環境有特定需求,否則模擬oop的時候常見寫法是:

local a = {}

function a.create()

local t =

return setmetatable(t, )endfunction a:public_method1()--body

endlocal function a:private_method1()

--body

endreturn a

--在其他檔案中使用時直接

local a = require("a")即可這樣無論閱讀**還是以後維護都簡單很多……作用域,介面等清晰明瞭

閉包的lua中

在lua語言中怎麼用sin,直接呼叫提示「attempt to call global 'sin'

5樓:匿名使用者

math.sin(x),x為弧度

math.sin(math.rad(x)) x為角度

奧迪a4l智慧鑰匙有什麼用,奧迪A4L智慧鑰匙有什麼用

就是你要是靠近車5米以內你直接去拉門把手門就能開啟不需要按鑰匙。比如你抱著一個箱子在手上你不好按鑰匙,你就可以直接去拉把手就開門了。一般智慧鑰匙都配帶了一鍵啟動系統。奧迪a4l智慧鑰匙有什麼用?就根據車鑰匙上的表示來用,啟動的時候可以選擇一鍵啟動,也可以選擇用鑰匙啟動。一,奧迪a4l智慧鑰匙沒有電了...

果仁有什麼用,果仁有什麼用

有些果仁裡還有豐富的礦物質,維生素,不飽和脂肪酸,這些東西對身體有很大好處 所以有一類養生粥叫果仁粥,熬煮果仁可將上述物質,熬煮出來,同時又能稀釋果仁的苦澀味!美容,調節內分泌,減輕便祕,降低血脂 調節膽固醇 功效。常吃果仁,有助於攝取到許多隻有從動物性食物中才能得到的營養元素,從而獲得營養的均衡。...

數學到底有什麼用數學有什麼用,數學有什麼用

作為一個日後不想以數學或者工程師或者精算師為職業的人來說,數學究竟何用呢?誠實的說,譬如三角,三角變換,微積分等等數學知識,一般人的生活和工作的確用不上,但並不能因此就說,這些東西學來無用。其實許多知識的所謂 用 跟數學一樣,是一種 無用之用 是作為一個思維方式健全的人所必備的知識體系之一。因為有了...