Lua.1 lua的類型與變量
lua的變量
lua的變量命名與其他語言大致相似,有兩點1. 由數字,字母,下劃線構成
2. 不可以使用數字開頭
例如:
m n myBook _myiPhone _pc001 _00 _VERSION
注意:
1. _00 這種下劃線跟數字的變量不建議寫
2. _VERSION 下劃線加大寫字母的寫法多用於保留字,儘量避免
局部變量
局部變量用local 來聲明
例如:
local bag
local cup
local telNum = 110
全局變量
只需要給一個變量賦值,那麼他就是全局變量
例如:
pcName = "Dell"
car = "Benz"
ID = 001
這些就是全局變量了
註釋
單行註釋,用 --
-- local num = 0
-- num = 2
多行註釋,用 --[[ ]]包起來
--[[
function add(x,y)
return x+y
end
]]
Lua的類型與值
lua是一門動態語言,也稱爲腳本語言,它區別於我們傳統的編譯型語言,它是依賴於解釋器來執行的,這裏我們不做過多介紹。
lua的類型總共分爲如下幾類
string => 字符串
number => 數字
function => 方法(C/C++程序員可能更習慣稱之爲函數)
boolen => 布爾值,只有true和false
nil => 空,值只有一個是nil
table => 表,這是Lua最具特點的一個類型,許多特性都依賴於它
thread => 線程
userdata => 自定義類型
函數type可以根據一個值返回對應的類型,例如
type("hello") string
type(1+1) number
type(print) function
type(true) boolean
string類型
字符串需要用用單引號或者雙引號來作爲界定符
a = "this is a string "
b = "do you konw ?"
c = 'i am xiaoming'
d = 'php is the best language '
我們用系統函數print來把他們打印出來
print(a)
print(b)
print(c)
print(d)
字符串可以用 .. 來連接
a = a .. b
print(a)
a = a .. c .. d
print(a)
還可以連接number類型,大家可以試試
number類型
lua中沒有 int double long short float這些類型,number類型表示一個實數,
一下表示都是可以的
num1 = 1
num2 = 1.0
num3 = 3e+1
table類型
官方解釋table是一個關聯數組,即具有特殊索引方式的數組(associative array)。
1.它不僅可以用整數來索引,也可以用字符串或其他類型的值來索引(除了nil)
2.沒有固定大小,可以動態的添加值進來
3.table可以模擬出各種數據結構,包括類與對象都可以模擬出來
4.table不是值也不是變量,它是對象,用C++的解釋就是它是內存中的一片區域,而變量只是指向它的指針
聲明一個table最簡單的辦法就是用{}來表示
a = {} -- 聲明瞭一個空table,將a指向這個表
a[1] = 1 -- 以整數爲索引,值爲1
a["sex"] = "man" -- 以字符串爲索引
print(a[1]) -- 1
print(a["sex"]) -- man
table間的賦值只是引用關係
b = a
b[1] = 2
print(a[1]) -- 2
b[1] = a[1] + 1
print(a[1]) -- 3
由上面可以看到,a和b是共享一個table的,它們只是指向一個table的引用而已
function類型
函數在lua裏面是第一類型的值,寫過其他腳本語言的人可能不太陌生,但是像我
一樣從C++這種語言轉過來的會覺得非常彆扭,居然可以這麼用,其實大家想想,
C++裏面不也是有函數指針嗎,只是沒有這麼方便
function log()
print("log")
end
log()
我們可以把函數賦值給一個變量
logVar = log
logVar()
甚至可以當做參數傳遞
function log(msg)
print(msg)
end
function main(log)
log("main function")
end
main(log)