写lua时需要注意的地方
Lua 從一個對象?obj?中獲取一個元方法的過程:
rawget(getmetatable(obj) or {}, "__" .. event_name)取長度操作符寫作一元前置符?#。 字符串的長度是它的字節數(就是以一個字符一個字節計算的字符串長度)。
程序可以通過?__len?元方法來修改對字符串類型外的任何值的取長度操作行為。
如果?__len?元方法沒有給出, 表?t?的長度只在表是一個?序列?時有定義。 序列指表的正數鍵集等于?{1..n}?, 其中?n?是一個非負整數。 在這種情況下,n?是表的長度。 注意這樣的表
{10, 20, nil, 40}不是一個序列,因為它有鍵?4?卻沒有鍵?3。 (因此,該表的正整數鍵集不等于?{1..n}?集合,故而就不存在?n。) 注意,一張表是否是一個序列和它的非數字鍵無關。
return?functioncall?這樣的調用形式將觸發一次?尾調用。 Lua 實現了?完全尾調用(或稱為?完全尾遞歸): 在尾調用中, 被調用的函數重用調用它的函數的堆棧項。 因此,對于程序執行的嵌套尾調用的層數是沒有限制的。 然而,尾調用將刪除調用它的函數的任何調試信息。 注意,尾調用只發生在特定的語法下, 僅當?return?只有單一函數調用作為參數時才發生尾調用; 這種語法使得調用函數的所有結果可以完整地返回。 因此,下面這些例子都不是尾調用:
return (f(x)) -- 返回值被調整為一個return 2 * f(x)return x, f(x) -- 追加若干返回值f(x); return -- 返回值全部被舍棄return x or f(x) -- 返回值被調整為一個?
Lua 語言有詞法作用范圍。 變量的作用范圍開始于聲明它們之后的第一個語句段, 結束于包含這個聲明的最內層語句塊的最后一個非空語句。 看下面這些例子:
x = 10 -- 全局變量do -- 新的語句塊local x = x -- 新的一個 'x', 它的值現在是 10print(x) --> 10x = x+1do -- 另一個語句塊local x = x+1 -- 又一個 'x'print(x) --> 12endprint(x) --> 11endprint(x) --> 10 (取到的是全局的那一個)注意這里,類似?local x = x?這樣的聲明, 新的?x?正在被聲明,但是還沒有進入它的作用范圍, 所以第二個?x?指向的是外面一層的變量。
轉載于:https://www.cnblogs.com/andyidea/p/4515531.html
總結
以上是生活随笔為你收集整理的写lua时需要注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SharePoint 2013 work
- 下一篇: PHP 数据库 ODBC