当前位置: 首页 > news >正文

Lua 学习

参照

注释

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

if语句

if true thenprint(true)
end

if else语句

nil是false

if nil thenprint("nil被当作true处理")
elseprint("nil被当作false处理")
end

运算符

% 取余
^ 乘幂 A=10,A^2=100
// 整除运算符(>=lua5.3)

~= 不等于
and 与
or 或
not 逻辑非 A=true,B=false -》 not(A and B) 则为true

字符串

单行

string1 = "this is string1"
string2 = 'this is string2'

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

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

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

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

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

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

循环 while

while(true)
doprint("循环将永远执行下去")
end

表 table

1.类似c#的字典用法

tab1={} --空表  {}构造表达式
print(tab1)  --table:00A89600   输出的是存储地址
print(tab1.key1)  --niltab2={key1=100,key2=“value2”} --初始化一张表 
print(tab2.key1) --100
print(tab2["key1"]) --100--table的数据添加  table不会固定长度大小
tab1.key1="www.sikiedu.com"
tab1["key2"]="siki"
tab1[10]=1000print(tab1["key1"]) --输出www.sikiedu.com
print(tab1.key1) --输出www.sikiedu.com
print(tab1.key2) --输出siki
print(tan1[10]) --输出1000

2.类型c#的数组写法
lua使用索引的地方是从1开始,而不是0

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

函数 function

c#里的函数(阶乘)

int fact(int n){if(n==1)return n;elsereturn n*fact(n-1);
}

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

function fact(n)if n==1return n;elsereturn n*fact(n-1);end
endprint(fact(3)); --输出6
fact2=fact; --把函数fact赋给fact2
print(fact2(3)); --输出6

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

function testFun(tab fun)for k,v in pairs(tab) dofun(k,v)end
endtab={key1="val1",key2="val2"}function f1(k,v)print(k..":"..v)
endtestFun(tab,f1)  --输出 key1:val1  key2:val2function f2(k,v)print(k.." "..v)
endtestFun(tab,f2) --输出 key1 val1    key2 val2--匿名函数 (不用写函数名)
--输出 key1-val1   key2-val2
testFun(tab,
function (k,v)print(k.."-"..v)
end
)
http://www.lryc.cn/news/321612.html

相关文章:

  • YOLOv7 | 添加GSConv,VoVGSCSP等多种卷积,有效提升目标检测效果,代码改进(超详细)
  • 『运维心得』BPC-EPM-AddIn专家看过来
  • 论文浅尝 | GPT-RE:基于大语言模型针对关系抽取的上下文学习
  • Rust语言:告诉编译器允许存在未使用的代码(Rust保留未使用的实现)
  • Winform数据绑定
  • DeprecationWarning: currentThread() is deprecated, use current_thread() instead
  • 2024届 C++ 刷题 笔试强训 Day 03
  • linux用git拉取我云端以及git处理冲突
  • Learn OpenGL 17 立方体贴图
  • 【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】
  • jvm 堆
  • Jenkins通知目标服务器拉取Harbor镜像部署
  • Android 13.0 系统中framework中关于Activitity的生命周期的源码讲解
  • 常见的几个Python技术难题
  • 【探索Linux】—— 强大的命令行工具 P.28(网络编程套接字 —— 简单的UDP网络程序模拟实现)
  • 【MATLAB源码-第165期】基于matlab的科莫多巨蜥算法(KMA)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 【Linux】项目部署CPU彪高如何定位
  • 第十二届蓝桥杯大赛软件赛决赛C/C++ 研究生组-纯质数
  • MyBatis面试简答题
  • lua 中的元表
  • c语言综合练习题
  • 相机拍照与摄影学基础
  • Pytorch:torch.cuda.empty_cache()
  • Linux--gdb调试
  • JavaSE(上)-Day6
  • (二十五)Flask之MTVMVC架构模式Demo【重点:原生session使用及易错点!】
  • [ C++ ] STL---list的使用指南
  • 数据可视化-ECharts Html项目实战(2)
  • 【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒
  • yum repolist命令的介绍