lua基础---函数
Lua的函数功能很强大,保留了C语言的一些基本的特性,但是也有C语言没有的特性,比如,lua可以在一个函数返回多个值,我们来看看下面这个案例:
解释运行: lua test5.lua
--定义一个函数,传入两个数,比较大小
--函数名为:compare_max_or_min
--返回值为:第一个为max,第二个为min
--当然,在function关键字前面可以加local,声明为局部函数,不加local默认为
--全局函数
function compare_max_or_min(max , min)
if max < min
then
return min,max ;
else
return max,min ;
end
end
i = 111 ;
j = 200 ;
max,min = compare_max_or_min(i,j)
print("max:",max);
print("min:",min);
运行结果:
max: 200
min: 111
Lua的函数也还可以以函数作为参数,这一点有点类似C语言的函数指针,我们来看看:test5.lua
--定义一个函数,传入两个参数,比较大小,大的返回在前,小的在后
function compare_max_or_min(max , min)
if max < min
then
return min,max ;
else
return max,min ;
end
end
--定义一个函数,传入三个参数,第一个和第二个为要比较的数,第三个是一个函数
--作为参数进行传递,这里联想起C的函数指针
function CallBackFunction(max , min , comparemax)
max = comparemax(max,min) ;
return max ;
end
--调用CallBackFunction
num1 = 385;
num2 = 999;
num3 = -2 ;
num4 = -6 ;
ret = CallBackFunction(num1,num2,compare_max_or_min) ;
ret1 = CallBackFunction(num3,num4,compare_max_or_min) ;
print("ret:",ret);
print("ret1:",ret1);
解释运行:lua test5.lua
运行结果:
ret: 999
ret1: -2
Lua也可以像C语言一样,实现可变参函数
案例:test5.lua
--可变参: ...
--可以重新实现一个print的函数:Lua_Debug
function Lua_Debug(str , ...)
print(str,...);
end
--可以传入多个参数,实现累加返回
function CalAdd(...)
add_ret = 0 ;
local arg = {...}
for i , v in ipairs(arg)
do
add_ret = add_ret + v ;
end
return add_ret ;
end
ret = 0 ;
Lua_Debug("Hello world");
ret = CalAdd(1,2,3,4,5,6,7,8,9,10);
print("ret:",ret);
解释运行: lua test5.lua
结果:
Hello world
ret: 55
lua基础---函数的更多相关文章
- Lua基础 函数(一)
转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作 ...
- Lua 基础
Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...
- Lua function 函数
Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细 ...
- Step By Step(Lua基础知识)
Step By Step(Lua基础知识) 一.基础知识: 1. 第一个程序和函数: 在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如: /> l ...
- lua闭合函数
function count( ... ) return function( ... ) i = i+ return i end end local func = count(...) print(f ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- Lua基础
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- Lua基础(转)
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
随机推荐
- Python Parameter Passing Note
我刚刚开始学习Python, Python中的参数传递总是让我很困惑.我写了4个简单的Demo,帮助我理解Python的参数传递,希望对大家都能有所帮助. 0: def change(x): x = ...
- Web框架(Day64)
阅读目录 http协议 web应用与web框架 一.http协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World W ...
- day4 字符串的使用方法
一.字符串切片 索引和切片 [起始位置:结束位置:步长] s1 = 'python全栈8期' # 索引从0开始[索引(下标,index)] print(s1[0]) print(s1[3]) prin ...
- Delphi 正则表达式语法(1): 关于大小写与中文
Delphi 正则表达式语法(1): 关于大小写与中文 //替换一般字符串 var reg: TPerlRegEx; begin reg := TPerlRegEx.Create(nil); ...
- CNN学习笔记:卷积神经网络
CNN学习笔记:卷积神经网络 卷积神经网络 基本结构 卷积神经网络是一种层次模型,其输入是原始数据,如RGB图像.音频等.卷积神经网络通过卷积(convolution)操作.汇合(pooling)操作 ...
- cdoj1329卿学姐与魔法
地址:http://acm.uestc.edu.cn/#/problem/show/1329 题目: 卿学姐与魔法 Time Limit: 1200/800MS (Java/Others) M ...
- Linux mount/unmount命令(6/16)
linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着 linux系统的日渐成熟和稳定以及它开放源代码特有的优越性,linux在全世界得到了越来越广泛的应用.现在 ...
- with as (cte common table expression) 公共表表达式
SQL中 with as 的用法——使用公用表表达式(CTE) 公用表表达式 (CTE) 可以认为是在单个 SELECT.INSERT.UPDATE.DELETE 或 CREATE VIEW 语句的 ...
- C# 加法运算内部执行过程
1,转换成32为或者64为的数字 2,进行运算 3,算出结果后为int32或者int64,进行类型转化得到自己需要的类型
- 通过FFmpeg将多媒体文件解码后保存成Bmp图像(YUV420 RGB32)
/* g++ -o test test.cpp -lavformat -lavcodec -lavutil -lz -lm -lpthread -lswscale */ #include <st ...