Lua從入門到放棄 元表 操作符

2021-07-11 07:48:13 字數 1131 閱讀 3657

廢話不多說,這篇就讓我們來看看有關元表操作符的問題。

許多元表的索引是操作符(如, +、-等),允許你使用表完成一些操作運算子。例如,我們想要乙個表支援乘法操作符(*), 我們可以這樣做:

t = setmetatable(,

for i = 1, other do

for _, v in ipairs(t) do

table.insert(new, v)

endend

return new

end })

t = t * 2    --    當呼叫乘法運算子時, 此時會調入__mul函式, t = , other = 2,執行函式得到new =

__add:加法(+)

__sub:減法(-)

__mul:乘法(*)

__div:除法(/)

__mod:取模(%)

__unm:取反(-), 一元操作符

__concat:連線(..)

__len:取長度(#)

__eq:等於(==)

__lt:小於(<)

__le:小於等於(<=)

注:(只有==, < , <=, 因為你能通過上面的實現所有操作符, 事實上== 和 <  就足夠了)

__call

接下來講講__call索引, 它允許你把表當函式呼叫,例如:

t = setmetatable({}, )

t(1, 2, 3, 4)    --  24, 表t在呼叫時先查詢__call, 呼叫裡面的函式, 此時a = 1, b = 2, c = 3, whatever = 4

__call非常有用, 經常用來在表和它裡面的函式之間**呼叫。

__tostring

如果想實現__tostring, 那麼tostring可以把錶轉換為string, 非常方便類似print的函式使用。一般情況下, 當你把表轉為string時, 你需要"table: 0x < hex - code -here", 但是你可以僅用__tostring來解決,例:

t = setmetatable(, )

print(type(t), t)    --  prints out -->  table    "sum: 6"

本文參考lua手冊  

lua從入門到放棄 八 lua運算子

運算子是乙個特殊的符號,用於告訴直譯器執行特定的數學或邏輯運算.lua提供了以下幾種運算子型別 算術運算子 關係運算子 邏輯運算子 其它運算子 下表列出了lua語言中的常用算術運算子,假設a為10,b為20 操作符描述例項 加號a b 30 減號 a b 10 乘號 a b 200 除號 a b 0...

lua從入門到放棄 五 lua迴圈

lua語言提供了以下幾種迴圈方式 迴圈型別 描述while迴圈 在條件為true時,迴圈地執行某些語句,在執行前會先判斷條件是否為true for迴圈 重複執行指定語句,重複次數可在for語句中控制 repeat util 重複執行迴圈,直到指定的條件為真為止 迴圈巢狀 可以在迴圈內巢狀乙個或多個迴...

lua從入門到放棄 四 變數

變數在使用前,必須顯式地宣告變數,即建立該變數.編譯程式在執行 之前編譯器需要知道如何給語句變數開闢儲存區,用於儲存變數的值.lua變數有三種型別 全域性變數,區域性變數,表中的域.lua中的變數全是全域性變數,哪怕是語句塊和函式裡,除非顯式地用local宣告為區域性變數.區域性變數的作用域為從宣告...