1. 程式人生 > >【lua】第一章-lua基礎(搭建環境,變數語法基礎)

【lua】第一章-lua基礎(搭建環境,變數語法基礎)

從今天開始學習lua,學習的過程大概是lua的基礎,lua和高階語言的互動,到在unity裡面使用lua

第一章.lua基礎

搭建環境


從網上下載luaStudio,有漢化版的。習慣使用vs的人應該會覺得非常的熟悉。
使用步驟:新建專案-新建檔案-編碼-F5
在第一次除錯時,會出現除錯設定。第一個要勾選,第二個是選擇是否彈出控制檯,可選可不選。

lua基礎

lua指令碼不需要寫“;”

1.變數
lua不需要申明變數。在使用過程中可以隨意改變它的型別。變數會根據所得到的值來判斷自己屬於什麼型別。這樣非常方便靈活,但是在使用的過程中就要小心了。程式碼量少還好,要是上千然後沒有好好管理變數,追查問題時就很痛苦了。

value = 1
value = "helloWorld"
print(value)
--輸出"helloWorld"

變數型別有五種:nil,Boolean,string,Number,table。
1.nil 相當於null,意味著為空或沒有被賦值。

2.Boolean就是布林值,只能是true或false。

3.string是字串。lua的字串可以容納到上百萬字元。在字串的值在數值範圍內時可以和數值進行直接運算。

value = "10"
value = value + 10
print(value)
--20
value = "hi"
value = value +10
print(value) --error

4.Number有整數和雙精度型別。但是使用的時候基本不需要區分。直接賦值就好。

5.table相當於陣列,列舉,結構體。非常強大。

myTable = {}
myTable.name ="XXX"
myTable.id = 0

TablePrint(myTable)--name:XXX,id:0

myTable["id"] = 10
myTable[1] = 20
myTable.cost = {}
myTable.cost["one"] = 1
myTable.cost["two"] = 2

TablePrint(myTable)
--name:XXX,1:20,id:10,cost.one:1,cost.two:2

2.生命週期
變數預設是全域性變數,在變數前加上local就是區域性變數。區域性變數的生命週期在於它存在的位置。這個和高階語言是一樣的。

3.運算子
1.加減乘除那就就按正常使用就好了
2.==的使用。在變數是table的情況下要注意,當兩個變數是同一個物件的時候才能為真。

tA ={0,1,2}
tB = {0,1,2}
tC = tA
if tA== tB then
    print("tA==tB")
    end
if tA==tC then
    print("tA==tC")
    end
--輸出"tA==tC"

3.or和and運算子。nil也會被認為是false。
or是遇到不為false的值就返回,都為false就返回false。
and是有但凡有false就返回false,否則返回第二個的值。

print(1,nil or 10)--10
print(2,10 or nil)--10
print(3,false or nil)--nil
print(4,10 or 2)--10
print(5,2 or 10)--2

print(1,nil and 10)--nil
print(2,10 and nil)--nil
print(3, 2 and 10)--10
print(4,10 and 2)--2

4.控制結構
常見的就是if,for,while,repeat語句。這裡就給出常用的示例。

--if語句(if-then-end)
if(1) then
    print("true")
    else
    print("false")
end
--true

--for語句(for-do-end)
for value = 0,10,2 do
    print(value)
end
--0,2,4,6,8,10
for value = 10,0,-2 do
    print(value)
end
--10,8,6,4,2,0
myTable = {11,12}
for key,value in pairs(myTable) do
    print(key,value)
end
--1 11//2 12

--while語句(while-do-end)
value = 1
while value<10 do
    value = value +1
end
print(value)
--10

--repeat語句(repeat-until)
value = 0
repeat
    value = value +2
until value >10
--12

5.函式
1.除了常見引數,lua還支援不定長引數。
2.除了常見返回值,lua還支援多個返回值。

function func(va,vb,...)
    arg = { ... }
    return va,vb,#arg
    --#table等於獲取該table的長度
end

print(func(11,12,13,14,15,16))
--11,12,4

6.簡單的I/O處理
需要得到地址,然後就能開啟檔案進行重寫。如果該地址本來沒有檔案的話,就會建立然後再寫入內容。

myFile = io.open("D:\\lua.lua","w")--地址和型別
if myFile ~= nil then
    myFile:write("helloWorld")
    io.close(myFile)
end