首页 > 其他分享 >LUA学习

LUA学习

时间:2023-10-27 11:15:57浏览次数:26  
标签:function 10 end nil 学习 LUA print table

SDK架构

  1. 展锐8910平台底层是基于FreeRTOS写的,所以会在main中创建许多task,比如音频协议栈串口等等,LUA用到的是Lua virtual task任务,

  2. 脚本运行流程是,底层core通过启动Lua task运行Lua虚拟机,虚拟机会找到对应的main.lua逐行嵌套开始解析执行。main.lua最末尾一行代码为sys.run()来处理内部或外部的消息。

基础语法

不用写分号,不用写类型

  1. a = 1 默认定义是全局变量,如果要取消,需要写local a = 1

  2. 没有声明过的值都是nil,nil是一个类型,这个类型只有nil一个值

  3. 所有数值都是number型
    a, b ,c = 0xfe, 2e5, 8
    所有的print都是以十进制打印

  4. 数值型可以加减乘除左右移

string

  1. 单引号双引号都是表示string的 支持转义字符 [[ ]] 这里括住的会被原原本本输出
  2. c = a..b 相当于连接两个字符串
  3. c = tostring(10) n = tonumer("10") 失败成nil
  4. a表示字符串a的长度

函数

  1. 写法
function xxx(a,b)
...
end

也可以

xxx = function(a,b)
...
end
  1. 函数返回值默认nil,也可以return主动设置,可以返回多个值

table

  1. 默认数字下标,第一个是1!!!
a = {1, "abc", function() end, {}}
table.insert(a, "b") //尾插
table.insert(a, 2, "b") //自选位置
b = table.remove(a, 5) //b返回移除的值
a[8] = 1
print(#a) //长度,比如a[8]有,但是a[7]等照样没有
  1. 字符串下标
a = {
	a = 1,
	b = "1234",
	c = function() end,
	["d"] = 123
}
print(a["a"])
print(a.d)
  1. 全局表_G
a = 1
print(_G["a"])  // 1
print(_G["table"]["insert"]) //function

分支判断

  1. 布尔型 true false
  2. ~= ≥ ≤
  3. a and b a or b 会直接返回a或者b的值 not a 只会返回true/false
  4. nil false才是假 0都是真
  5. print(b>10 and "yes" or "no")
  6. 写法
if 1 > 10 then
XXX
elseif 2>10 then
XXX
else
xxx
end

循环

for i=1,10,2 do
    print(i)
	if i==5 then break end
end

步长也可以是负值

while n > 1 do
xxx
end

不支持自增自减 += -= 这些

标签:function,10,end,nil,学习,LUA,print,table
From: https://www.cnblogs.com/xsl-blogs/p/17789828.html

相关文章

  • 机器学习——多层感知机
    线性模型的局限性例如,线性意味着单调假设:任何特征的增大都会导致模型输出的增大(如果对应的权重为正),或者导致模型输出的减小(如果对应的权重为负)。有时这是有道理的。例如,如果我们试图预测一个人是否会偿还贷款。我们可以认为,在其他条件不变的情况下,收入较高的申请人比收入较......
  • 最近学习到的一些linux的常用命令
    1、ls命令可以列出当前目录下的内容清单。它与windows下的dir命令很像 2、cd命令这个命令可以改变目录cd~  //更改到本用户的主目录cddesktop //更改目录到desktop cd.. //更改目录到上一级 3、管道输出可以把shell命令输出到文件里面ls>somefile.tx......
  • 机器学习|K邻近(K Nearest-Neighbours)
    本文从概念、原理、距离函数、K值选择、K值影响、、优缺点、应用几方面详细讲述了KNN算法K近临(KNearest-Neighbours)一种简单的监督学习算法,惰性学习算法,在技术上并不训练模型来预测。适用于分类和回归任务。它的核心思想是:相似的对象彼此接近。例如,若果你想分类一个......
  • Django实战项目-学习任务系统-任务管理
    接着上期代码框架,开发第3个功能,任务管理,再增加一个学习任务表,用来记录发布的学习任务的标题和内容,预计完成天数,奖励积分和任务状态等信息。 第一步:编写第二个功能-用户注册1,编辑模型文件:./mysite/study_system/models.py:classStudyTask(models.Model):task_id=mod......
  • 信息安全系统设计与实现——学习笔记7
    任务详情:自学教材第11章,提交学习笔记Part1知识点归纳&GPT提问知识点归纳Part2问题与解决思路问题gpt解决Part3实践过程截图Part4其他......
  • 基于Googlenet深度学习网络的信号调制类型识别matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本MATLAB2022a 3.算法理论概述      信号调制类型识别是在无线通信和无线电频谱监测中的一个重要任务。不同信号调制类型具有不同的频谱特征,深度学习方法在信号调制类型识别中取得了显著的成果。 3.1深度学习与......
  • 初学者Linux的学习记录
    Linux是什么呢?让我们来看一下它的定义:定义:Linux,一般指GNU/Linux(单独的Linux内核并不可直接使用,一般搭配GNU套件,故得此称呼),是一种免费使用和自由传播的类UNIX操作系统;其实它的本质就是一个操作系统。Linux的四大特点:一切皆文件:Linux系统中的一切都归结为文件。对于操作系统内核......
  • c# winfom从0学习开发开发OA、BPM工作流程与自定义表单系统(十二)新建一个完整的工作流
     先设计一个表单 开始设计表单 设计一个表单例如请假表单 Tag十分的重要,再设计流程图节点的时候tag起到的作用是提示当前控件是谁,再设置可写字段环节十分重要 保存 设计流程图 设计请假流程图设计好请假的流程 设置每个节点的参数 所有部门下的人都......
  • MyBatis-Plus学习笔记
    官方介绍mybatis-plus可以理解为加强版的mybatis,可以帮我们减少编写mapper中简单的sql语句,你可以理解为IPhone13和IPhone13Plus官网是这么说的:MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。并且还列出了以......
  • 学习Java的第一天 Markdown 语法
    Markdown学习标题:一级标题#+标题名字​二级标题##+.....以此类推二级标题三级标题字体Hello,World!粗体字体前后两个**Hello,World!斜体字体前面一个*Hello,World!又粗又斜字体前后三个***Hello,World!删除线......