Lua 多返回值

2023-09-18 22:14:45

Lua这门神奇的语言可以在函数里面返回多个值具体函数如下

function multi_return()
 return 2,"hellow world"
end
local a , b = multi_return();--多个都返回
print(a,b)

local m = multi_return();--默认返回第一个返回值
print(m)

unpack函数

local array_data ={1,2,3,4,5}
local _,_,a,b,_ = unpack(array_data)
--解开array_data里面的数据

类似于import引用或者 c#里面的using,lua引用脚本使用require

require("math_func")
require "math_func"
--脚本可以添加返回值
return "hellow world"
local hellow=require("math_func")
--多次require会装载一次 多次装载返回值跟第一次一样
--装载后即可直接调用函数

可以以表的形式返回类

-- local关键字修饰的函数只能在这个模块内部使用
local function _test_func( ... )
	print("_test_func")
	print(device.get_device_name())
end

function math_abs(value)
	if (value < 0) then 
		return -value
	end

	return value
end

function math_vec_length_2(vec)
	return vec.x * vec.x + vec.y * vec.y
end

-- 其他的功能函数......
print("math func loading#####")
_test_func()
--函数,会分为内部函数,和接口函数;
--为了方便我们的用户使用和管理
--模块的接口函数给他统一的导出来;

--做了一个表,把我们的接口函数设置到这个表里
local list = {
	abs = math_abs,
	lenth = math_vec_length_2,
	test_func = _test_func,
}
return list

--下面为调用逻辑
local math_func = require("math_func")
-- require的返回值到底是什么呢?
print(math_func)

--如果一个lua代码被require多次会发生什么样的事情;
--require只会装载执行lua代码一次,
--local ret =  require("math_func")
--多次require只会装载和执行一次lua脚本,但是第二次require的时候
--会发现前面已经装载过了,所以直接返回第一次装载的返回值;
-- print(ret)
--end

-- 怎么在其他的文件里面使用lua的函数呢?
local ret = math_abs(-4)
ret = math_vec_length_2({x = 3, y = 4})
print(ret)

ret = math_func.abs(-8) 
print(ret)

math_func.test_func()

module函数让类可以作为全局可以找到的模块

module("lessons", package.seeall) --声明后就内部函数可以作为全局使用只需引用一次
function getLessonName()
 return "math"
end
--外面调用
local name = device.get_device_name()
print(name)

更多推荐

Linux--线程(与进程区别)

Linux线程1、线程与进程进程可以看成只有一个控制线程:一个进程同时只做一件事情。有了多个控制线程后,可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是分配系统资源(CPU时间、内存等)的基本单位。进程本身不是基本运行单位,而是线程的容器。一个进程可以拥有多个线程。进程

【智能家居-大模型】行业专题报告:ChatGPT等大模型催化智能家居行业发展

(报告出品方/作者:华安证券,马远方)1智能家居:ChatGPT等大模型为行业发展带来新机遇1.1现状:智能家居产品的用户体验(交互能力、智能化水平)及安全性待提升智能家居:智能化的家庭系统,增加生活便利、舒适、安全。智能家居是指通过互联网技术和智能设备,将家庭设备、家庭电器、家庭安全等各种家居设施连接,实现智能控制、

计算机竞赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录0前言1课题背景2实现效果3卷积神经网络3.1卷积层3.2池化层3.3激活函数:3.4全连接层3.5使用tensorflow中keras模块实现卷积神经网络4inception_v3网络5最后0前言🔥优质竞赛项目系列,今天要分享的是🚩**基于深度学习的动物识别算法**该项目较为新颖,适合作为竞赛课题方向,学

Servlet

1Servlet1.1概念Servlet是JavaEE规范之一。规范就是接口Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet服务于HTTP协议的服务端的一个小程序,“接收请求,解析请求,根据请求执行业务逻辑,做出响应”1.2实现功

【Spatial-Temporal Action Localization(七)】论文阅读2022年

文章目录1.TubeR:TubeletTransformerforVideoActionDetection摘要和结论引言:针对痛点和贡献模型框架TubeREncoder:TubeRDecoder:Task-SpecificHeads:2.HolisticInteractionTransformerNetworkforA

使用vue-cli搭建spa项目

目录一.什么是vue-cli二.安装vue-cli三.使用脚手架vue-cli(2.X版)来构建项目四.vue项目结构说明五.基于spa项目完成路由六.基于spa项目完成嵌套路由好啦!今天的分享就到这啦!!一.什么是vue-cliVueCLI是一个基于Vue.js的官方脚手架工具,用于快速启动、构建和管理Vue.js项

【论文阅读 05】图像异常检测研究现状综述

1图像异常检测任务图像异常检测任务根据异常的形态可以分为定性异常的分类和定量异常的定位两个类别.定性异常的分类:整体地给出是否异常的判断,无需准确定位异常的位置。如图2左上图所示,左侧代表正常图像,右侧代表异常图像,在第1行中,模型仅使用服饰数据集中衣服类型的样本进行训练,则其他类别的样本图像(鞋子等)对模型来说都是需

论文阅读 - Natural Language is All a Graph Needs

目录摘要IntroductionRelatedWork3InstructGLM3.1Preliminary3.2InstructionPromptDesign3.3节点分类的生成指令调整3.4辅助自监督链路预测4Experiments4.1ExperimentalSetup4.2MainResults4.2.1ogbn

机器学习—非零中心化、非零中心化会带来的问题

众所周知,激活函数最好具有关于零点对称的特性,不关于零点对称会导致收敛变慢。这种说法看到几次了,但对于背后的原因却一直比较模糊,今天就来捋一捋。神经元模型如图1所示是神经网络中一个典型的神经元设计,它完全仿照人类大脑中神经元之间传递数据的模式设计。大脑中,神经元通过若干树突(dendrite)的突触(synapse),

【数据结构练习】链表面试题集锦二

目录前言:1.链表分割2.相交链表3.环形链表4.环形链表II前言:数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,每篇大约5题左右。此为第二篇选择题篇,该系列会不定期更新敬请期待!1.链表分割代码:publicclassPartition{publicListNode

Hadoop-sqoop

sqoop1.Sqoop简介及原理简介:Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysq1.postgresql..)间进行数据的传递,可以将一个关系型数据库(例如:MySQL,Oracle,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关

热文推荐