Lua笔记

最后更新于 2022-08-18 551 次阅读


脚本语言真随意啊...感觉到处都是语法糖

判断 循环

--[[
duohangzhushi
a
a
]]

--赋值语句
--a = 123
--b = 'abc'

--同时赋值
a,b = 123,'abc'

print(a)
print(b)

age = 17
print(type(age > 18))

--false nil是不成立的
--0 是成立的
if age < 18 then
    print("you can work")
elseif age > 75 then
    print('go to park')
else
    print('u should go to work')
end

--for循环
for i = 1,5 do
    print(i)
end

--while循环
while a > 120 do
    print(a)
    a = a - 1
    if a < 121 then
        break
    end
end

--不等于 ~=

--逻辑 与 或 非 and or not

if not (age > 18) and age < 70 then
    print('aaaaaa')
end

repeat

ans = 15

repeat
    print('guess the password (little than 100)')
    a = tonumber(io.read())

    if a == ans then
        print("u are right!")
        break
    elseif a > ans then
        print('too big')
    else
        print('too small')
    end

until false

table

--lua唯一内置数据结构table

--下标从1开始
a = {1,2,3,4,'a','b',x = 123,y = 456,pos = {c = 233}}

print(a[1])
print(a['b'])
print(a['x'])

--table.key 语法糖

a.z = 789
--a['z'] = 789
print(a['z'])
print(a.pos.c)

--遍历 pairs ipairs

for k,v in pairs(a) do
   print(k,' : ',v)
end

function

--函数
--[[
    add = function(a,b)
        return a+b
    end

    print(add(1,2))
]]


--语法糖
--多返回值

function fun(a,b)
    return a + b,a * b
end

--print(add(1,2))

sum,product = fun(1,2,3)

--print(sum,product)

--高阶函数
--first class

function process(f,a,b)
    --print(f)
    print(a)
    print(b)
    print(f(a,b))
end

--process(fun,3,5)
--process(fun,2,4)


--可变参数
function add(...)
    local sum = 0
    local arg = {...}
    for k,v in ipairs(arg) do
        sum = sum + v
    end
    return #arg,sum
end

print(add(1,2,3,4,5,6))