Lua面試題目

2021-08-18 10:00:11 字數 1457 閱讀 6782

1、lua的特性

2、lua資料型別

lua是動態型別語言,變數不要型別定義,只需要為變數賦值。 值可以儲存在變數中,作為引數傳遞或結果返回。

lua中有8個基本型別分別為:nil、boolean、number、string、userdata、function、thread和table。

其中:lua 把 false 和 nil 看作是"假",其他的都為"真":

3、pairs 和 ipairs區別

**示例:

local

tab=

fori,v

inpairs

(tab)do

--輸出

"a",

"b",

"c",

print

(tab[i

])endfori,

v in

ipairs

(tab)do

--輸出

"a",k=

2時斷開

print

(tab[i

])end

4、lua元表(metatable)

在 lua table 中我們可以訪問對應的key來得到value值,但是卻無法對兩個 table 進行操作。

因此 lua 提供了元表(metatable),允許我們改變table的行為,每個行為關聯了對應的元方法。

例如,使用元表我們可以定義lua如何計算兩個table的相加操作a+b。

當lua試圖對兩個表進行相加時,先檢查兩者之一是否有元表,之後檢查是否有乙個叫"__add"的字段,若找到,則呼叫對應的值。"__add"等即時字段,其對應的值(往往是乙個函式或是table)就是"元方法"。

有兩個很重要的函式來處理元表:

__index 元方法

這是 metatable 最常用的鍵。

當你通過鍵來訪問 table 的時候,如果這個鍵沒有值,那麼lua就會尋找該table的metatable(假定有metatable)中的__index 鍵。如果__index包含乙個**,lua會在**中查詢相應的鍵。

lua查詢乙個表元素時的規則,其實就是如下3個步驟:

__newindex 元方法

__newindex 元方法用來對錶更新,__index則用來對錶訪問 。

當你給表的乙個缺少的索引賦值,直譯器就會查詢__newindex 元方法:如果存在則呼叫這個函式而不進行賦值操作。

__call 元方法

__call 元方法在 lua 呼叫乙個值時呼叫。

__tostring 元方法

__tostring 元方法用於修改表的輸出行為。

5、閉包

閉包:通過呼叫含有乙個內部函式加上該外部函式持有的外部區域性變數(upvalue)的外部函式(就是工廠)產生的乙個例項函式

閉包組成:外部函式+外部函式建立的upvalue+內部函式(閉包函式)

6、c和lua的互相呼叫

Lua 面試題目

1 lua中八種基礎型別 nil 空 boolean 布林 number 數字 string 字串 userdata 自定義型別 function 函式 thread 執行緒 table 表 2 string.sub 123456 2,2 結果2345 3 lua中 只有 false 和 nil 代...

C 面試題目

1 ispostback正確的是 首次載入頁面的ispostback的值為false 重新整理頁面後的ispostback的值為true 第三個選項忘了 2 頁面傳值的幾種方式 request.querystring session server.transfer 3 什麼是瀏覽器的 無狀態 如何解...

面試題目總結

1.char p和char p的區別。1 char getstring void void main 2 char getstring void void main 為什麼 1 輸出的是亂碼,2 能夠輸出 hello world?hello world 作為靜態字串實際上儲存在文字常量區 參見 棧和...