Lua文件翻譯(中)

2021-04-02 06:25:56 字數 2880 閱讀 5344

lua文件翻譯(中)

型別

lua是動態型別語言,不需要人為指明變數型別,指令碼直譯器會自動判斷變數型別。簡單的說,給變數賦什麼型別的值,變數就變成什麼型別。

lua是動態型別語言,不需要人為指明變數型別,指令碼直譯器會自動判斷變數型別。簡單的說,給變數賦什麼型別的值,變數就變成什麼型別。

lua是動態型別語言,不需要人為指明變數型別,指令碼直譯器會自動判斷變數型別。簡單的說,給變數賦什麼型別的值,變數就變成什麼型別。

函式type(var)

返回變數

var的型別名。

注意:不同型別的變數用「==

」比較總是為

false

,false == nil

也是false

。為避免不易查出的錯誤,不要比較不同型別的變數。

引用型別

資料表型別(

table

),函式型別(

function

),使用者定義型別(

userdata)

都是引用型別。即他們是對內容的引用,多個引用型別的變數可以引用同乙個內容。

例:local table1 =

local table2 = table1-- table1

和table2

都引用同乙個資料表

table2[2] = 99

print(table1[2])-- table1[2] = 99

如果引用型別沒有提供自己的==、~=運算子操作,則執行預設的比較運算,即判斷兩引用是否指向同一內容;注意不是比較內容是否一致。

例:{} == {}

-- 永遠為

false

,因為建立了兩個空資料表,它們不是同乙個資料表。

變數

lua處理區域性變數要比處理全域性變數快幾倍,所以盡量使用區域性變數。在所有函式外部即全域性也可宣告區域性變數,差別是全域性變數一直存在,而宣告在全域性的區域性變數只在該模組的生存期存在,並只能被宣告它的模組訪問。

使用全域性變數有難以發現的錯誤,例:

g_deamoncount = 10

...g_deamoncuont = 20--

拼寫錯誤,o和

u顛倒了,但不會被指令碼直譯器發現,

-- 因為乙個新的全域性變數被建立了

lua正在加入

global

關鍵字以解決此問題。

讀取未賦值的變數也不會報錯,所以最好宣告變數時賦個預設值。

函式巢狀

函式既是可執行的命令,也是可使用的資料,所以函式滿足變數的作用域規則,即只在宣告它的塊記憶體在,例:

function foo()

...end

dofunction foo()

...end

foo()--

呼叫do...end

內的foo()

endfoo()--

呼叫全域性的

foo()

即 function foo()..end

等同於

local foo = function()...end

一些庫函式

dofile(

檔名) -- 執行指定檔案中的指令碼

print(e1, e2, ...) --

顯示變數或常量的值

math.abs(v) -- 取v

的絕對值

math.acos(v), math.asin(v) --

反余弦,反正弦

math.atan(y/x), math.atan2(y, x) --

反正切,前者只適用於第一象限,後者可用於所有象限

math.floor(v) --

取小於等於

v的最大整數

math.ceil(v) --

取大於等於

v的最小整數

math.cos(v), math.sin(v), math.tan(v) --

取余弦,正弦,正切

math.deg(v) --

弧度變角度

math, rad(v) --

角度變弧度

math.exp(v) -- 取e

的v

次冪math.log(v) -- 取以e

為底的對數(自然對數)

math.log10(v) --

取以10為底的對數

math.pow(x, y) -- 即x

的y

次冪math.min(v1, v2, ...), math.max(v1, v2, ...) --

取最小的,最大的

math.mod(v1, v2) --

取v1 / v2

的餘數math.sqrt(v) -- 取v

的平方根

math.random() --

取0到1的隨機小數

math.random(upper) --

取1到upper

的隨機整數

math.random(lower, upper) --

取lower

到upper

的隨機整數

math.randomseed(seed) --

置隨機數種子

寫遊戲指令碼的注意事項

盡量使用本系列文件中提到的用法:

lua本身語法很松,用法很靈活,在看其它文件和樣例時會有在此沒有提到的語法內容,這些語法內容不是必要的,但卻容易導致錯誤或帶來過大的複雜性。例如用(

test

) and v1 or v2

來模擬c

語言的三元表示式,我們不推薦使用。

varnish vcl man 文件翻譯

近來聽說了varnish這個東東,看描述說比squid效能強不少,但是國內知道這個玩意的人少上加少,所以特意翻譯一下方便varnish這個東西再國內的推廣.另外也被自己以後查閱提供點方便.名稱 vcl varnish configuration language varnish配置語言 描述 這裡沒...

varnish vcl man 文件翻譯

近來聽說了varnish這個東東,看描述說比squid效能強不少,但是國內知道這個玩意的人少上加少,所以特意翻譯一下方便varnish這個東西再國內的推廣.另外也被自己以後查閱提供點方便.名稱 vcl varnish configuration language varnish配置語言 描述 這裡沒...

NHibernate文件翻譯

這裡是目錄 1.體系結構 2.isessionfactory配置 3.持久化類 persistent classes 5.集合類 collections 對映 6.關聯對映 7.示例 parent child 8.nhibernate快取 nhibernate.caches 10.nhibernat...