01.Lua筆記_基礎語法部分

一.基礎語法

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。

 

邏輯運算符認爲falsenil是假(false),其他爲真,0也是true.
and的優先級比or
其它語言中的and表示兩者都爲真的時候,才返回爲真,而只要有一個假,都返回假.lua雖不僅返回假的語義,還返回導致假的值.也就是說
a and b
afalse的時候,返回a,否則返回b.
or的處理與之類似,
a or b
atrue的時候,返回a,否則返回b.

 

總之,andor返回的不僅有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.循環結構whilerepeatfor

 

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
敵人在移動

 

 

 

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