Lua的學習總結筆記

2021-09-29 01:32:58 字數 2973 閱讀 5874

下面是我個人在學習lua時的一些筆記分享給大家,希望可以找到一併學習lua的小夥伴。

接下來就是筆記部分了:

1. lua的變數,注釋,語句塊

(1)數字型別

(2)字串型別

(3)thread型別

(4)function型別

(5)table型別

(6)其他型別

不加 local 關鍵字的變數或function都是global訪問型別

2. 關係運算and,or,no在lua中的所表達的特殊含義

—lua中只有 false 和 nil 才表示為假

—and 如果第乙個需要我們計算運算元是假的話,那麼我就返回第乙個運算元,反之就返回第二個運算元

eg:print(1 and 2)

print(false and 2)

pring (true and false)

—or 如果第乙個需要我們計算運算元是真的話,我就返回第乙個值,反之就返回第二個值

eg:print( 1 or 2)

print(nil or 1)

print(false or 2)

----not 永遠返回的只有true 和false

eg:print(not nil)

print(not 1)

print(not 2)

print(not false)

3. lua迭代器:(pars(t)&ipars(t))

tip:lua中的遍歷陣列下標從1開始

不同之處:

pairs可以遍歷表中的所有的key,可以返回空值nil。

eg:for i,v in paies(tabel)… do

ipars只能遍歷到表**現的第乙個不是整數的key,不能返回空值nil,只能返回數字0.

eg:for i,v in ipairs(tabel) …do

4.使用nil可以清楚表中元素的值

eg:a={}

a.b=1

a.c=2

a.b=nil清除a表的b元素

5.獲取lua表的長度使用#tabel。

1)型別轉換,tostring()&tonumber()

eg:local a=tostring(123)

print(a,type(a))

local a=tonumber(「123」)

print(a,type(a))

2)下面的經常被使用(字串格式轉換)

local a= string.format(「hi%d」,2)

print(a)

6.踩坑:lua的點和冒號的區別:

乙個點用來定義和取得乙個變數,這個變數可能是個函式

兩個點用來定義和呼叫乙個函式,兩個點會自動傳入「呼叫者」這個table自身。

先發這麼多吧,有時間後面再補充。

7,lua異常處理函式:(內建斷言assert()方法)

lua內建中提供了異常處理函式assert(a,b)a是要檢查是否有錯誤的乙個引數,b是a錯誤時丟擲的資訊。第二個引數b是可選的,根據自己的需要來修改。簡單講就是輸出錯誤資訊的函式,作用和debug類似。

assert首先判斷第乙個引數是否返回錯誤,如果不返回錯誤,則assert簡單返回,否則則以第二個引數丟擲異常資訊。

8.cocos2d-x 3.0 lua中的定時器

定時器重新整理 schedule

​ **在c++中,定時器參見:**

​ 在lua中,有兩種方式:

​ (1)self:scheduleupdatewithprioritylua(update, priority)

​ > 引數一:重新整理函式

​ > 引數二:重新整理優先順序

​ 其中 self 為 node類 的子類。

​ 該方法預設為每幀都重新整理一次,無法自定義重新整理時間間隔。

​ (2)scheduler:schedulescriptfunc(update, inteval, false)

​ > 引數一:重新整理函式

​ > 引數二:每次重新整理的時間間隔

​ > 引數三:是否只執行一次。false為無限次。

​ 其中 scheduler 為定時器管理:cc.director:getinstance():getscheduler()

9.cocos2dx+lua節點渲染順序

cocos2dx+lua節點渲染順序在新增sprit精靈時使用的是預設的場景圖層渲染 localzorder ,globalzorder是用於 渲染器 中用來給「繪製命令」排序的其渲染優先順序要高於localzorder。 globalzorder值越小越先被渲染,但是顯示在後被渲染的下面。 .

總結:節點的渲染順序跟節點的三個成員變數有關(_localzorder、_globalzorder、_orderofarrival)分別對應三個設定函式setlocalzorder、setglobalzorder、setorderofarrival。無論是_localzorder、_globalzorder、_orderofarrival都是越大的越後渲染,越小的越先渲染,而且有_globalzorder的優先順序大於_localzorder的優先順序大於_orderofarrival的優先順序。

lua取table函式rawget(table,index)不受元表的影響,根據引數table、index獲取真正的值table[index],也就不會呼叫到元表,其中table必須是乙個表,引數index可以是任意值。

10.lua中父類與子類之間的ctor初始化函式的聯絡

self.super:ctor(…)-------引數是:self.super,即base

self.super.ctor(self,…)----引數是:self、即子類

Lua學習筆記 lua堆疊

首先了解一下c 與lua之間的通訊 假設在乙個lua檔案中有如下定義 hello.lua檔案 請注意紅色數字,代表通訊順序 1 c 想獲取lua的myname字串的值,所以它把myname放到lua堆疊 棧頂 以便lua能看到 2 lua從堆疊 棧頂 中獲取myname,此時棧頂再次變為空 3 lu...

lua學習筆記

近日時間比較充裕,學習一下lua語言,順便寫下筆記,方便以後加深學習。c c 呼叫lua動態庫及標頭檔案位址 用於c c 嵌入lua指令碼解析 也可以到或找適合自己的版本。一 hello world 哈哈,先使用經典的hello world帶進門 1.在 執行 鍵入cmd開啟dos視窗,並將當前目錄...

Lua 學習筆記

1 關於table lua 中的 table 是python 中的 list 和 dict 的混合體。t 相當於 t 簡單的看,實際上完全相當於 python 中的 dict 不過實際對於鍵為整數的,是放在 list 中的,方便快速索引。當然基於節省記憶體的考量,對於跳躍的大整數鍵,依然是放在 di...