Lua 学习

参照

注释

lua 复制代码
 --  这是单行注释
lua 复制代码
 --[[
 这是多行注释
 --]]

if语句

lua 复制代码
if true then
    print(true)
end

if else语句

nil是false

lua 复制代码
if nil then
    print("nil被当作true处理")
else
    print("nil被当作false处理")
end

运算符

% 取余

^ 乘幂 A=10,A^2=100

// 整除运算符(>=lua5.3)

~= 不等于

and 与

or 或

not 逻辑非 A=true,B=false -》 not(A and B) 则为true

字符串

单行

lua 复制代码
string1 = "this is string1"
string2 = 'this is string2'

字符串多行

2 个方括号 "[[]]" 来表示"一块"字符串

lua 复制代码
html = [[
<html>
<head></head>
<body>
    <a href="http://www.runoob.com/">菜鸟教程</a>
</body>
</html>
]]

字符串连接使用...,而不是+,+在lua里是运算符

lua 复制代码
print("2".."6")    --输出为26
print("2"+"6")    --输出为8  +号会尝试将字符串转为number再进行运算
print("2"+"6a")    --输出会报异常

使用 # 来计算字符串的长度,放在字符串前面

lua 复制代码
len = "www.runoob.com"
print(#len)  --输出为14
print(#"siki学院") --输出为8  一个中文字符占两个长度 

循环 while

lua 复制代码
while(true)
do
    print("循环将永远执行下去")
end

表 table

1.类似c#的字典用法

lua 复制代码
tab1={} --空表  {}构造表达式
print(tab1)  --table:00A89600   输出的是存储地址
print(tab1.key1)  --nil

tab2={key1=100,key2="value2"} --初始化一张表 
print(tab2.key1) --100
print(tab2["key1"]) --100

--table的数据添加  table不会固定长度大小
tab1.key1="www.sikiedu.com"
tab1["key2"]="siki"
tab1[10]=1000

print(tab1["key1"]) --输出www.sikiedu.com
print(tab1.key1) --输出www.sikiedu.com
print(tab1.key2) --输出siki
print(tan1[10]) --输出1000

2.类型c#的数组写法

lua使用索引的地方是从1开始,而不是0

lua 复制代码
tab3={"apple","pear","orange","grape"} --默认key为1,2,3,4
print(tab3[2])  --输出pear lua的索引从1开始,而不是0

函数 function

c#里的函数(阶乘)

csharp 复制代码
int fact(int n){
    if(n==1)
        return n;
    else
        return n*fact(n-1);
}

lua函数写法 function开始,end结束

lua 复制代码
function fact(n)
    if n==1
        return n;
    else
        return n*fact(n-1);
    end
end

print(fact(3)); --输出6
fact2=fact; --把函数fact赋给fact2
print(fact2(3)); --输出6

把函数作为参数传递(类似c#的委托,但lua没有委托)

lua 复制代码
function testFun(tab fun)
    for k,v in pairs(tab) do
        fun(k,v)
    end
end

tab={key1="val1",key2="val2"}

function f1(k,v)
    print(k..":"..v)
end

testFun(tab,f1)  --输出 key1:val1  key2:val2

function f2(k,v)
    print(k.." "..v)
end

testFun(tab,f2) --输出 key1 val1    key2 val2

--匿名函数 (不用写函数名)
--输出 key1-val1   key2-val2
testFun(tab,
function (k,v)
    print(k.."-"..v)
end
)
相关推荐
故事和你911 小时前
洛谷-算法2-1-前缀和、差分与离散化1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
励志的小陈7 小时前
贪吃蛇(C语言实现,API)
c语言·开发语言
Makoto_Kimur7 小时前
java开发面试-AI Coding速成
java·开发语言
上海合宙LuatOS7 小时前
LuatOS扩展库API——【libfota】远程升级
物联网·junit·lua·luatos
laowangpython7 小时前
Gurobi求解器Matlab安装配置教程
开发语言·其他·matlab
wengqidaifeng7 小时前
python启航:1.基础语法知识
开发语言·python
观北海7 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
DeepModel8 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
handler019 小时前
从零实现自动化构建:Linux Makefile 完全指南
linux·c++·笔记·学习·自动化
Ulyanov9 小时前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真