Lua.1 lua的類型與變量

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)





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章