一.基礎語法
1.HelloWorld
print(“Hello World”) 或者 print(‘Hello World’)
單引號雙引號都可以 不需要分號結尾
2.定義變量
age = 100
name = “WangXD”
isMan = true
以上變量都爲全局變量
定義變量沒有類型 存儲什麼類型變量就是什麼類型
變量的命名不能以數字開頭,儘量避免下劃線和大寫字母開頭(Lua自身保留),儘量變量小寫、方法大寫。
3.註釋
--這是單行註釋
--[[ 這是多行註釋 ]]—
4.變量類型
nil 表示空數據 等同於null
boolean類型,true 或者 false(在Lua語言中nil和false爲false,其餘都爲true)
string 字符串類型,可以用單引號或者雙引號表示
number 小數類型 (Lua中沒有整數類型)
table 表類型 myTable = {1,2,3} 相當於長度爲3的數組
下標從1開始 print(myTable[1],myTle[3]) --輸出 1 3
5.type() 獲取變量類型
--代碼
age = 100
name = "WangXD"
isMan = true
myTable = {3,2,1}
print(type(age),type(name),type(isMan),type(myTable)) -- 輸出 numberstringbooleantable
6.局部變量和全局變量
直接聲明的變量就是全局變量,在任何地方都是可以訪問到的、
定義局部變量需要在前面加一個local 、在代碼塊中聲明的局部變量,當代碼塊運行結束的時候會被釋放。
local hp = 70
7.運算符
1.算數運算符 + - * / %(Lua中沒有++ --這樣的運算符)
--代碼1
num1 = 34
num2 = 2
result1 = num1+num2
result2 = num1-num2
result3 = num1*num2
result4 = num1/num2
result5 = num1%num2
print(result1,result2,result3,result4,result5) -- 輸出結果 363268170
--代碼2
num1 = 34.1
num2 = 2
result1 = num1+num2
result2 = num1-num2
result3 = num1*num2
result4 = num1/num2
result5 = num1%num2
print(result1,result2,result3,result4,result5) -- 輸出結果 36.132.168.217.050.1
2.關係運算符 <= 、<、>、>=、==
--代碼
num1 = 5
num2 = 6
result1 = num1<num2
result2 = num1>num2
print(result1,result2) --輸出結果 true false
3.邏輯運算符and or not分別表示與或非
強調一點 在Lua中認爲 nil 和 false 爲false 其他都爲 true
--代碼
isMan1 = true
isMan2 = false
result1 = isMan1 and isMan2
result2 = isMan1 or isMan2
result3 = not result2
print(result1,result2,result3) --輸出結果 false true false
--代碼
isMan1 = 2
isMan2 = 1
result1 = isMan1 and isMan2
result2 = isMan1 or isMan2
result3 = not result2
print(result1,result2,result3) -- 輸出結果 1 2 false
問題: number類型進行邏輯運算符
解答:
a and b 輸出的過程是
1.先判斷a ,如果a是false 直接輸出a的值false,a and b就是false.
2.如果a是true,判斷b 如果b是false就輸出b的值false ,a and b就是false.
3.a 和b都是true則輸出最後一個判斷的值true,a and b的值就是true。
邏輯運算符認爲false和nil是假(false),其他爲真,0也是true.
and的優先級比or高
其它語言中的and表示兩者都爲真的時候,才返回爲真,而只要有一個假,都返回假.lua雖不僅返回假的語義,還返回導致假的值.也就是說
a and b
在a爲false的時候,返回a,否則返回b.
or的處理與之類似,
a or b
在a爲true的時候,返回a,否則返回b.
總之,and與or返回的不僅有true/false的語義,還返回了它的值
8.流程控制語句
1.if語句三種用法
--代碼1
local hp = 70
if hp == 70 then
print("WangXD")
end
--代碼2
local hp = 90
if hp == 100 then
print("WangXD")
elseif hp ==90 then
print("Wang")
end
--代碼3
local hp = 70
if hp<=0 then
print("role is die")
elseif hp<=50 then
print("role is bad")
else
print("role is good")
end
9.循環結構while、repeat、for
1.while循環
--代碼
index = 0
while index<=100 do
print(index)
index = index+1
end
2.repeat循環
--代碼
index = 0
repeat
print(index)
index = index+1
until index>100
3.for循環
--代碼
for index = 1,100,2 do
print(index)
end
10.函數(方法)
--代碼
function GetPlus(num1,num2)
return num1+num2
end
res = GetPlus(11,22)
print(res)
11.標準庫(標準函數)
1.數學處理math相關函數
print(math.abs(-90)) --取絕對值
print(math.max(12,23,58,96,5)) --最大值
print(math.min(12,23,58,96,5)) --最小值
print(math.random(2,5)) --隨機數(第一次隨機產生的不靠譜)
print(math.random(2,5)) --隨機數
2.字符串處理的string相關函數
print(string.lower('WXD')) --轉換爲小寫
print(string.upper('wxd')) --轉換爲大寫
print(string.sub("WangXD",1,3)) --截取第一個到第二個
print("Wang".."XD") --兩個點連接字符串
print(string.find("WangXDan","an")) --查找指定字符串
print(string.find("WangXDan","an",4)) --查找指定字符串
3.表處理的table相關函數
myTable = {}
myTable[1] = 11
myTable[3] = "WangXD"
myTable["name"] = "WangXD"
myTable.name = "Wang"
print(myTable[1],myTable[3],myTable.name,myTable["name"])
4.文件操作的io相關函數
待總結
12.通過表實現面向對象編程
Enemy = {}
local this = Enemy
Enemy.hp = 100
Enemy.speed = 12.3
Enemy.move = function()
print("敵人在移動")
end
function Enemy.Attack()
print(this.hp,"attack")
print(this.hp,this.speed,"attack")
this.move()
end
Enemy.Attack()
--輸出結果
100 attack
100 12.3 attack
敵人在移動