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当做函数处 ...
随机推荐
- Redis——安装
Linux下面: 下载安装包: wget http://download.redis.io/releases/redis-4.0.10.tar.gz 解压: tar xzf redis-4.0.10. ...
- Java并发(3):volatile及Java内存模型
Java 语言中的 volatile 变量可以被看作是一种“程度较轻的 synchronized“:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但 ...
- Python:virtualenv介绍
virtualenv 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时 ...
- java路径两种写法"/"和"\\"
String path="D:\\新建文件夹\\2.png"; File file=new File(path); System.out.println(file.exists() ...
- Mac OS X下搭建Android开发环境(包括SDK和NDK)
资源准备: JDK Eclipse Android SDK Android NDK ADT CDT ANT 搭建Android SDK开发环境: 1.JDK安装,要求版本>1.5, Mac O ...
- python2.7中的字符编码问题
0. 写在前面 起因:之前写个数据预处理程序的时候遇到了点问题,用re模块的正则查找方法search时总是找不出来(找错了或者出乱码),于是捣鼓捣鼓. 经过:查资料,做实验,发现用utf8编码的str ...
- ThreadLocal管理登录信息
通常在项目中,用户登录后,我们会将用户的信息存到session,如果想在其它地方获取session中的用户信息,我们需要先获取HttpServletRequest,再通过request.getSess ...
- Python面试题之Python对象反射、类反射、模块反射
python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 一.getattr 对象获取 class Manager: role = &quo ...
- PHP-FPM 设置多pool、配置文件重写
重写配置文件 1.清空php配置文件 命令:> /usr/local/php/etc/php-fpm.conf 2.重新写入php-fpm配置 命令:vim /usr/local/php/etc ...
- 如何用纯 CSS 创作一个小球上台阶的动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/PBGJwL 可交互视频 ...