Lua基础学习

目录 ->[[…/目录|目录]]

基础

注释

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

输出

print("hello world") -- echo:hello world

变量

类型

数据类型描述
nil表示一个无效值(在条件表达式中相当于false)。
booleanfalse和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
table关联数组,数组的索引可以是数字、字符串或表类型
print(type(nil)) -- echo:nil
print(type(true)) -- echo:boolean
print(type(3.14)) -- echo:number
print(type("hello")) -- echo:string

定义和初始化

-- nil
null_arg = nil-- boolean
bool_arg = true-- number
num1 = 1
num2 = 3.14
num3 = 0.2e-1-- string
str1 = "hello"
str2 = 'world'
str3 = [[
第一行
第二行
]]-- table
t1 = {}
t2 = {"hello", "world"}
t3 = {key1 = 100, key2 = 300}

作用域

-- 默认为全局变量
a = 1
-- 加上local为局部变量
local b = 2

运算

赋值运算

a = 10
a, b = 10, 20
-- 交换
a, b = b, a

nil

-- 初始化数字变量a,赋值为10
a = 10
-- 销毁a变量
a = nil

boolean

print(not true) -- echo:false
print(true and false) -- echo:false
print(true or false) -- echo:true

number

a = 10
b = 3print(a + b) -- echo:13
print(a - b) -- echo:7
print(a * b) -- echo:30
print(a / b) -- echo:3.3333333333333
print(a ^ b) -- echo:1000.0

string

str1 = "2"
str2 = "8"print(str1 + str2) -- echo:10
print(str1 .. str2) -- echo:28
print(str1 * 3) -- echo: 6-- 获取字符串长度
print(#"hello你好") -- echo:11

tabel

t1 = {"first", "second"}
print(t1[1]) -- echo:first
print("t1个数"..#t1.."个") -- echo:t1个数2个t2 = {key1 = 100, key2 = 200}
print(t2.key1) -- echo:100
print(t2["key1"]) -- echo:100-- 插入
t2["key3"] = 300
-- 删除
t2["key1"] = nil

分支

if 条件1 then分支1
elseif 条件2 then分支2
else分支3
end

循环

while

while 条件 do循环体
end

for

for 变量=初始值,结束值,步长 do循环体
endfor key,value in pairs(表名) do循环体
end

repat until(do-while)

repeat循环体
until 条件

循环控制语句

  • break
for i = 1, 10, 2 doif i > 5 thenbreakendprint(i)
end
--[[
echo:1
echo:3
echo:5
]]
  • goto label -> :🏷:
for i = 1, 10, 1 doif i % 2 == 1 thengoto continueendprint(i)::continue::
end
--[[
echo:2
echo:4
echo:6
echo:8
echo:10
]]

函数

定义及初始化

-- 函数也是变量,可以进行赋值、作为参数传递
[local] function 函数名(参数列表)函数体[return 参数列表]
end

可变参数

function add_all(...)local ret = 0;for key, value in pairs({...}) doret = ret + valueendreturn ret
endprint(add_all(10, 20, 30)) -- echo:60
print(add_all(1, 2, 3, 4)) -- echo:10

string

-- 字符串全部转为大写字母
print(string.upper("Hello")) -- echo:HELLO
-- 字符串全部转为小写字母
print(string.lower("Hello")) -- echo:hello
-- 在字符串中替换
print(string.gsub("aaaa", "a", "z", 3)) -- echo:zzza    3
-- 返回匹配这个子串的起始索引和结束索引,不存在则返回 nil
print(string.find("Hello Lua user", "Lua", 1)) -- echo:7       9
-- 字符串反转
print(string.reverse("Hello")) -- echo:olleH
-- 返回一个类似printf的格式化字符串
print(string.format("the value is:%d",4)) -- echo:the value is:4
-- 将整型数字转成字符并连接
print(string.char(97,98,99,100)) -- echo:abcd
-- 转换字符为整数值(可以指定某个字符,默认第一个字符
print(string.byte("ABCD",4)) -- echo:68
-- 计算字符串长度
print(string.len("abc")) -- echo:3
-- 返回字符串string的n个拷贝
print(string.rep("abcd",2)) -- echo:abcdabcd
-- 字符串截取
print(string.sub("hello", 2, -1)) -- echo:ello

迭代器

默认迭代函数

-- 遍历array
for k,v in pairs(array) do
end
-- 遍历array,索引为1234,断掉则结束
for k,v in pairs(array) do
end

自定义迭代函数

for 变量列表 in 迭代函数, 状态变量, 控制变量 do循环体
end
-- 返回1~9的平方
function square(iteratorMaxCount,currentNumber)if currentNumber<iteratorMaxCountthencurrentNumber = currentNumber+1return currentNumber, currentNumber*currentNumberend
endfor i,n in square,3,0
doprint(i,n)
end

table

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring - 9 ( 10000 字 Spring 入门级教程 )

一&#xff1a; MyBatis XML 配置文件 Mybatis 的开发有两种方式&#xff1a; 注解XML 我们已经学习了注解的方式, 接下来我们学习 XML 的方式 MyBatis XML 的方式需要以下两步: 配置数据库连接字符串和 MyBatis写持久层代码 1.1 配置连接字符串和 MyBatis 此步骤需要进…

InfiniFlow 創始人兼CEO張穎峰確認出席“邊緣智能2024 - AI開發者峰會”

隨著AI技術的迅猛發展&#xff0c;全球正逐步進入邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同書寫著分布式智能創新應用的壯麗篇章。邊緣智能&#xff0c;作為融合邊緣計算和智能技術的新興領域&#xff0c;正逐漸成為推動AI發展的關鍵力量。借助分布式和去中心…

C++ 函数 参数与返回值

#一 参数与返回值 回顾文件读数据功能 文件读数据 1函数参数传值调用过程 将函数调用语句中的实参的一份副本传给函数的型材。 简单的值的传递&#xff0c;实参的值没有发生变化。 2 函数参数传值调用过程 传地址调用 将变量的地址传递给函数的形参 形参和实参指向了同…

【Unity Shader入门精要 第3章】Unity Shader基础

1. Unity提供的四种shader模板 Standard Surface Shader&#xff1a;unity自己创建的shader类型&#xff0c;提供了基本的光照处理逻辑&#xff0c;使用者不需要自己实现vertext/fragment着色器&#xff0c;只要指定光照模型&#xff0c;unity会自动编译生成对应的vertext/fra…

C语言 基本数据类型及大小

一、基本数据类型 1.整型int 整型的关键字是int&#xff0c;定义一个整型变量时&#xff0c;只需要用int来修饰即可。也分为短整型和长整型。 2.浮点型 浮点型又分单精度浮点型float和双精度浮点型double。 3.字符型char 前面的整型和浮点型都是用于存放数字。字符型&…

docker部署nginx并实现https

文章目录 docker部署nginx并实现https1、服务器环境2、安装docker3、准备证书4、准备nginx配置文件和dockerfile文件5、创建nginx镜像与容器6、验证访问 docker部署nginx并实现https 1、服务器环境 [rootliuyanfen12 ~]#systemctl stop firewalld [rootliuyanfen12 ~]#setenf…

【c++】继承学习(二):探索 C++ 中派生类的默认机制与静态成员共享

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 目录 1.派生类的默认成员函数2.继承与友元3.继承与静态成员 朋友们大家好&#xff0c;本篇文章我们来学习继承的第二部分 1.派生类的默认成员函数 来看下面的类&#xff1a; class Person…

Django框架之模板层

一、模版语法 1、模版初识 &#xff08;1&#xff09;语法 {{ }}: 变量相关 {% %}: 逻辑相关 &#xff08;2&#xff09;变量 ① 传值 在Django的模板语言中按此语法使用&#xff1a; {{ 变量名 }}。 当模版引擎遇到一个变量&#xff0c;它将计算这个变量&#xff0c;然…

Delta lake with Java--分区表

今天尝试一下将昨天的数据操作建立的表换成分区表&#xff0c;参考Delta Lake Up and Running做法用分区表的方式来更新数据。还要比较一下分区表的查询与非分区表的查询&#xff0c;结果显示分区表的查询速度要比非分区表要快。直接上代码&#xff1a; import io.delta.table…

发表博客之:transformer 架构 推理时候运算流程详细讲解,以及变长推理支持,小白都可以看得懂,AI推理工程师必备技能!

文章目录 [发表博客之&#xff1a;transformer 架构 推理时候运算流程详细讲解&#xff0c;以及变长推理支持&#xff0c;小白都可以看得懂&#xff0c;AI推理工程师必备技能&#xff01;](https://cyj666.blog.csdn.net/article/details/138439826)总结一下高性能变长推理 发表…

JAVA面试题--数据库基础

连接查询 1.左连接 &#xff08;左外连接&#xff09;以左表为基准进行查询,左表数据会全部显示出来,右表 如果和左表匹配 的数 据则显示相应字段的数据,如果不匹配,则显示为 NULL; 2.右连接 &#xff08;右外连接&#xff09;以右表为基准进行查询,右表数据会全部显示出来,右…

初识Vue-脚本架(如何创建vue项目并使用)

一、介绍vue脚本架 Vue 脚手架”通常指的是 Vue CLI&#xff0c;是一个官方提供的命令行工具&#xff0c;用于快速搭建 Vue 项目。Vue CLI 提供了一套标准化的项目模板和一系列的开发工具&#xff0c;使得创建、管理和部署 Vue 项目变得更加简单和高效。以下是 Vue CLI 的一些…

定点乘除法

目录 一、定点乘法 1.串行乘法器 2.并行乘法器 二、定点除法 1.笔算除法 2.机器除法 一、定点乘法 1.串行乘法器 1.符号位单独处理&#xff0c;两数的符号位按异或运算得到&#xff0c;而乘积的数值部分则是两个正数相乘之积。 2.过程 &#xff08;1&#xff09; 由乘…

持续总结中!2024年面试必问 100 道 Java基础面试题(二十八)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 100 道 Java基础面试题&#xff08;二十七&#xff09;-CSDN博客 五十五、Object类有哪些常用的方法&#xff1f; Java中的Object类是所有Java类的根类&#xff0c;它位于类继承层次结构的顶端。Object类提供了一…

「2024年」前端开发常用工具函数总结 TypeScript

前言 在前端开发中&#xff0c;工具函数是提高代码复用率、保持代码整洁和增加开发效率的关键。使用 TypeScript 编写工具函数不仅可以帮助开发者捕捉到更多的类型错误&#xff0c;还可以提供更清晰的代码注释和更智能的代码补全。下面是一些在 TypeScript 中常用的前端开发工…

在Django中实现多用户角色和权限管理的方法

在Django中实现多用户角色和权限管理可以通过以下步骤实现&#xff1a; 定义用户角色模型&#xff1a;首先&#xff0c;定义一个用户角色模型&#xff0c;该模型表示不同的用户角色&#xff0c;例如管理员、普通用户、编辑等。 from django.db import modelsclass Role(model…

移动构造函数是否标记noexcept对性能有重要影响

1. 移动构造标记noexcept时才会被正确调用 #include <iostream> #include <string> #include <vector>class Vehicle{ public:Vehicle(){std::cout << "Vehicle default-ctor called.\n";}Vehicle(const std::string& brand) : brand_(…

Java如何获取当前日期和时间?

Java如何获取当前日期和时间&#xff1f; 本文将为您介绍 Java 中关于日期和时间获取的方法&#xff0c;以及介绍 Java 8 中获取日期和时间的全新API。 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取&#xff0c;此方法优势是…

Hadoop生态系统的核心组件探索

理解大数据和Hadoop的基本概念 当我们谈论“大数据”时&#xff0c;我们指的是那些因其体积、速度或多样性而难以使用传统数据处理软件有效管理的数据集。大数据可以来自多种来源&#xff0c;如社交媒体、传感器、视频监控、交易记录等&#xff0c;通常包含了TB&#xff08;太…

【算法】双指针思想

一、Leetcode27.移除元素 1.题目描述 给你一个数组 nums和一个值 val&#xff0c;你需要 [原地] 移除所有数值等于 val的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 [原地 ]修改输入数组。 元素的顺序可以…