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...