Nodejs 第五十章(lua的基本使用)

image.png

lua基本使用

全局变量局部变量

  • 全局变量是在全局作用域中定义的变量,可以在脚本的任何地方访问。
  • 全局变量在定义时不需要使用关键字,直接赋值即可。
xiaoman = 'xmzs'

print(xiaoman)
  • 局部变量是在特定作用域内定义的变量,只能在其所属的作用域内部访问。
  • 局部变量的作用域通常是函数体内部,也可以在代码块(使用 do...end)中创建局部变量。
  • 在局部作用域中,可以通过简单的赋值语句定义局部变量。
--local 定义局部变量
local xiaoman = 'xmzs'

print(xiaoman)

条件语句

在Lua中,条件判断语句可以使用 ifelseif 和 else 关键字来实现

local xiaoman = 'xmzs'

if xiaoman == "xmzs" then
    print("xiaoman")
elseif xiaoman == "xmzs1" then
    print("xiaoman1")
else
    print("not xiaoman")
end

函数

在Lua中,函数是一种可重复使用的代码块,用于执行特定的任务或操作

local xiaoman = 'xmzs'

function func(name)
    if name == "xmzs" then
        print("xiaoman")
        return 1
    elseif name == "xmzs1" then
        print("xiaoman1")
        return 2
    else
        print("not xiaoman")
        return 3
    end
end

local result = func(xiaoman)
print(result)

数据类型

  1. nil表示无效值或缺失值
  2. boolean表示布尔值,可以是 true 或 false
  3. number表示数字,包括整数和浮点数
  4. string表示字符串,由字符序列组成
  5. table表示表,一种关联数组,用于存储和组织数据
  6. function表示函数,用于封装可执行的代码块
  7. userdata:表示用户自定义数据类型,通常与C语言库交互使用。
  8. thread:表示协程,用于实现多线程编程。
  9. metatable:表示元表,用于定义表的行为。

常用数据类型用法

type = false --布尔值
type = nil --就是null
type = 1 --整数
type = 1.1 --浮点型
type = 'xmzs' --字符串
print(type)

字符串拼接 ..

local s = 'xm'
local m = 'zs'
print(s .. m)

table 可以描述 对象和数组

lua索引从1开始

--对象
table = {
    name = "xiaoman",
    age = 18
}
print(table.name)
print(table.age)
--数组
arr = {1,2,3,4,6}
print(arr[1])

循环

for i = 1, 10, 3 do --开始 结束 步长  步长就是递增数量
    print(i)
end

循环table

arr = {name = "hello", age = 18, sex = "male"}
for k, v in pairs(arr) do
    print(k, v)  --key 和 value 也就是 name 和 hello ...
end

循环数组

local arr = {10,20,30}

for i, v in ipairs(arr) do
    print(i,v)
end

模块化

test.lua 暴露一个方法add

local M = {}

function M.add(a, b)
    return a + b
end

return M

index.lua 引入该文件调用add方法

local math = require('test')

local r = math.add(1, 2)

print(r)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云4核8G12M轻量服务器优惠价格446元一年,646元15个月

腾讯云4核8G12M轻量服务器优惠价格446元一年,646元15个月,180GB SSD云硬盘,2000GB月流量。 一张表看懂腾讯云服务器租用优惠价格表,一目了然,腾讯云服务器分为轻量应用服务器和云服务器CVM,CPU内存配置从2核…

【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响

业务简介 在网络状态变化的时候(数据或WiFi),会更新SPN。 基于Android U的代码分析。 分类:SPN Data_Dic-的博客-CSDN博客 功能逻辑 状态说明 飞行模式下注册上WFC的话,注册状态MD上报 regState: NOT_REG_MT_NOT…

SpringBoot 自定义映射规则resultMap collection一对多

介绍 collection是封装一对多关系的,通常情况下是一个列表,association是一对一,通常情况是一个对象。例如:查询班级下所有的学生,一个班级可以有多个学生,这就是一对多。 案例 有一个学生表&#xff0c…

NineData云原生智能数据管理平台新功能发布|2024年2月版

SQL开发:全功能支持百度云 GaiaDB 介绍:支持通过 SQL 开发所有能力管理 GaiaDB 实例。更多信息,请参见:真香!NineData SQL 开发全面适配 GaiaDB 场景:企业使用 GaiaDB 管理企业数据,需要一个一…

第五篇:组件更新:完整的 DOM diff 流程是怎样的?(下)

下面我们来继续讲解上节课提到的核心 diff 算法。 新子节点数组相对于旧子节点数组的变化,无非是通过更新、删除、添加和移动节点来完成,而核心 diff 算法,就是在已知旧子节点的 DOM 结构、vnode 和新子节点的 vnode 情况下,以较…

Sora核心之一:可变时长、分辨率、尺寸

Overview 一、总览二、摘要三、引言四、方法4.1、架构改动4.2、训练改变4.3、NaViT的效率 NaViT 一、总览 题目: Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution 机构:Google DeepMind 论文: https://arxiv.org/pdf/2307.06304…

python72-Python的函数入门,为函数提供文档

之前介绍过可以使用Python内置的help()函数查看其他函数的帮助文档,我们也经常通过help()函数查看指定函数的帮助信息,这对于Python开发者来说非常重要。 我们还可以为函数编写说明文档一只要把一段字符串放在函数声明之后、函数体之前,这段字符串将被作…

LVGL:切换页面

static lv_obj_t *contanier1 NULL; static lv_obj_t *contanier2 NULL;static void win_btn_event_callback(lv_event_t* e) {lv_event_code_t code lv_event_get_code(e);if (code LV_EVENT_CLICKED){lv_obj_t * obj lv_event_get_target(e);//按钮if(lv_obj_get_child(co…

回溯算法03-电话号码的字母组合(Java)

3.电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:d…

#define MODIFY_REG(REG, CLEARMASK, SETMASK)

#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) 这个宏 MODIFY_REG 是在嵌入式编程中,它用于修改一个寄存器的特定位,而不影响其他位。这个宏接受三个参数&#xff…

onav_rim 复现记录

onav_rim 复现记录 任务复现过程克隆项目,创建环境源码安装habitat-sim从github上安装CLIP环境配置收尾工作数据集下载模型评估其他问题训练训练模型 任务 上次复现one4all失败,但我就是想看看我的电脑能不能做end2end的视觉导航任务。这次看到了《Obje…

Java多线程——信号量Semaphore是啥

目录 引出信号量Semaphore ?Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——信号量Semaphore是啥 信号量Semaphore ? Semaphore 通常我们叫它信号量, 可以用来控制同时访问特…

Java实现布隆过滤器示例

布隆过滤器(Bloom Filter)是一种用于快速检查一个元素是否属于一个集合的数据结构。它基于哈希函数的思想,可以在空间和时间上实现高效的元素判断。 布隆过滤器通常用于解决以下问题: 1.快速查询:布隆过滤器可以在常数…

3. 在Go语言项目中使用Zap日志库

文章目录 一、介绍二、 默认的Go Logger1. 实现Go Logger2. 设置Logger3. 使用Logger4. Logger的运行5. Go Logger的优势和劣势 三、Uber-go Zap1. 为什么选择Uber-go zap2. 安装3. 配置Zap Logger4. 定制logger4.1 将日志写入文件而不是终端4.2 将JSON Encoder更改为普通的Log…

大学四年我从非科班到互联网大厂之路

文章目录 一、两度高考、依然选错?二、初来乍到、陷入囹圄三、破局重生、从头再来四、找实习的坎坷之路五、提前结束实习,开始秋招六、秋招一路凯歌七、写在最后:人生是一场长久的旅途 很久没来CSDN上写过文章了,上一次写已经是20…

pycharm安装pojie2024最新

pojie工具请关注微信公众号“program那些事儿”,回复ideapj,即可获取。 一、下载 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 点击如图所示,下载pycharm专业版的软件,安装就是一步一步的装&a…

让运维无忧,实战解析巡检报告功能实现方案

随着大数据技术的演进和信息安全性需求的提升,数据规模的持续扩张为数据运维工作带来了严峻考验。面对海量数据所形成的繁重管理压力,运维人员面临效率瓶颈,而不断攀升的人力成本也使得单纯依赖扩充运维团队来解决问题变得不再实际可行。 由…

黄金投资是收益高还是风险高?

黄金作为一种传统的投资工具,长久以来一直受到投资者的青睐。然而,在讨论黄金投资的收益与风险时,必须明确一点:黄金投资既有可能带来较高的收益,同时也伴随不可忽视的风险。 从收益的角度来看,黄金投资的确…

Linux上轻松搞定Docker环境安装

Docker环境安装 是否安装docker # 该命令通过查询Docker服务的状态来检查是否已安装,且是否在正常运行 systemctl status docker下面这种状态就是docker正常运行的状态: 安装yum-utils: yum install ‐y yum‐utils device‐mapper‐per…

手工将一个 llvm IR 汇编代码解析成为 bitcode 文件

1&#xff0c;原始c语言文件 sum.c int sum(int a, int b) {return ab; } 2&#xff0c;编译成为 LLVM-IR 汇编语言 clang sum.c -emit-llvm -S -c -o sum.ll 3&#xff0c;手工把 llvm IR 汇编语言解析成 bitcode 3.1&#xff0c;源码 gen_llvm_ir.cpp #include <ll…