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
敌人在移动

本文仅用作个人笔记,方便复习使用。

猜你喜欢

转载自blog.csdn.net/wxd444725262/article/details/77386947