LUA语法(初级)

2020年11月27日
lua版本:5.4.0 Win64

注释

--单行注释
--[[
    多行注释
]]

变量声明

--全局变量声明
--单变量
Say = "Hello World"
--多变量
S,a,y = "Hi","Hello",15

--局部变量声明
--单变量 
local year=2020
local hour,minute,second = 8,55,40

--[[
    提示:
        Lua默认所有变量均为全局变量
        局部变量需要添加 Local 修饰
        声明变量时,不需要指定数据类型
        不需要在代码末位写分号
]]

赋值语句

--赋值语句
a,b = 10,5
print(a,b)
--result 10  5
a,b = b,a
print(a,b)
--result 5  10
a,b = 10
print(a,b)
--result 10 nil
a = 10,5
print(a)
--result 10
--[[
    提示:
        变量个数>值个数-->按变量个数补足nil
        变量个数<值个数-->多余的值会被忽略
]]

运算符

算数运算符

A,B = 2,5
_Jia   =  A + B   print(_Jia)   --result 7
_Jian  =  A - B   print(_Jian)  --result -3
_Cheng =  A * B   print(_Cheng) --result 10
_Chu   =  A / B   print(_Chu)   --result 0.4
_Mi    =  A ^ B   print(_Mi)    --result 32.0
_Yu    =  A % B   print(_Yu)    --result 2

比较运算符

> < >= <= ~= == and or not

print(3>3)   --大于号 result false
print(3<3)   --小于号 result false
print(3>=3)  --大于等于号 result true
print(3<=3)  --小于等于号 result true
print(3==3)  --等于等于号 result true
print(3~=3)  --不等于号 result true
--[[
    提示:
        Lua里不存在感叹号!
        不等于号用的是 波浪 ~ =
]]

--数字测试
print(4 and 5)
--result 5
print(nil and 13)
--result nil
print(false and 13)
--result false
print(4 or 5)
--result 4
print(false or 5)
--result 5
print(not 4)
--result false

连接运算符

..

print("Hello" .. "World")
--result HelloWorld
print("Data".. 2020 .. "-" .. 11 .. "-" .. 27)
--result Data2020-11-27
print(1 .. 2)
--result 12
--[[
    提示:
        Lua里只有 false和nil 为假 其他值都真
]]

数据类型

--nil 空值
--所有没有使用过的变量都是nil;nil既是值,又是数据类型
a = nil
print(a)
--reult nil

--boolean 布尔类型
b1,b2 = true,false
print(b1,b2)
--result true    false
--,可以连接boolean类型,并加入空格
--..不能连接俩个boolean类型

--number 数值类型 相当于C语言的double 
c1,c2,c3 = 100,5,5.03
print(c1..c2..c3)
--result 10055.03(连接运算符把结果全部黏在了一起)

--string 字符串类型
d1,d2,d3,d4 = "He","llo","\n","World"
print(d1..d2..d3..d4)
--result Hello(换行)World

--table 关系类型,这个类型的功能比较强大

--function 函数类型,可以由函数类型来声明变量

简单Table示例

--Table普通
FKK = {}
print(type(FKK))
--result table
FKK[0]= 10
print(FKK[0])
--result 10
FKK["a"]={aa="aa",ab="ab"}
print(FKK["a"]["aa"])
--result aa
--Table嵌套
FKK = 
{
    10,
    [100] = 100,
    ["100"] = 10,
    person = 
    {
        name = "FKK",
        age = 20
    },
    30
    --在表内["100"] = 10 --等同于[100]=10
}
print(type(FKK["person"]))
--result table
FKK["person"] = 10 --等同于[person]=10
print(type(FKK["person"]))
--result number

简单语法

if语法

--接收俩个数进行大小比较
a,b=io.read(),io.read()
if a>b then
    print(a)
elseif a==b then
    print(a,b)
elseif a<b then
    print(b)
end

for语法 (支持break)

--for语法
i = 1
for i=2,10,3 do
    -- body
    print("local + "..i)
end
print("All + "..i)
--[[
    结果:
        local + 2
        local + 5
        local + 8
        All + 1
    提示:
        for循环内的i为局部变量
]]
array = {"213","213",nil,"123"}
--ipairs遍历 遇到空值 跳出
for i,v in ipairs(array) do
    -- body
    print(v)
end
--[[
    result
        213
        213
]]
--paris遍历 遇到空值 跳过
for k,v in pairs(array) do
    if v == nil then
        print(k)
    end
    -- body
    print(k,v)
end
--[[
    result
        1       213
        2       213
        4       123
]]
--普通遍历
for i=1,4 do
    -- body
    print(array[i])
end
--[[
    result
        213
        213
        nil
        123
]]

while语法

--while语句
i = 1
while i<100  do
    -- body
    print(i)
    --步长
    i=i+10
end

repeat语法(类似c#do…while)

i=0
repeat
    -- body
    print(i)
	--步长
    i=i+1
until i>10

2020年11月27日
lua版本:5.4.0 Win64

#Function函数
##声明函数

--声明一个 无参 函数
function func_name()
    --方法体
    print("This is function")
end
--调用这个函数
func_name()
--result This is function

--声明 一个参数 接收 有参 函数
fkk = function (str)
    --方法体
    print(str .. " Say Hello")
end
--调用这个函数
fkk("FKK")
--result FKK Say Hello

--[[
    提示:
        LUA不支持重载
]]

--该方法能找出数组中最大的数以及它在数组中的下标
--函数名字 maximun 有一个参数
function maximum (a)
    --局部变量 mi 初始值为 1 (代表初始下标)
    local mi = 1 -- maximum index
    --局部变量 m 初始值为 a[mi] (代表初始下标为1的值)
    local m = a[mi] -- maximum value
    --for循环 ipairs方法遍历 数组 a (遇空值 跳出)
    for i,val in ipairs(a) do
        --if判断 当前值是否 大于 当前已知最大值
        if val > m then
            --判断为真 则对 mi 与 m 进行重新赋值
            mi = i
            m = val
        end
    end
    --返回结果 m mi
    return m, mi
end
--测试 数组[8,10,23,12,5]
print(maximum({8,10,23,12,5}))
--result 23 3

元表

setmetatable(table,metatable) 返回table
设置元表 son 继承 parent 内 __index表格(或函数)的数据
getmetatable(table) 返回metatable 获取元表

__index是table

--空表
son={}
--带__index 表格的表
parent={
    --__index是表格
    __index = {
        name = 1234
    }
}
--设置 parent 为 son 的 元表
setmetatable(son,parent)
--测试
print(son.name)
--result 1234

__index是方法

--空表
son={}
--带__index 表格的表
parent={
    --__index是方法
    __index = function()
        print("FKK")
    end
}
--设置 parent 为 son 的 元表
setmetatable(son,parent)
--测试
print(son.name)
--[[result
        FKK --没找到name对应的值,所以先执行__index方法
        nil --然后打印空值
]] 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值