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基础---函数的更多相关文章

  1. Lua基础 函数(一)

    转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作 ...

  2. Lua 基础

    Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...

  3. Lua function 函数

    Lua支持面向对象,操作符为冒号‘:’.o:foo(x) <==> o.foo(o, x). Lua程序可以调用C语言或者Lua实现的函数.Lua基础库中的所有函数都是用C实现的.但这些细 ...

  4. Step By Step(Lua基础知识)

    Step By Step(Lua基础知识) 一.基础知识:    1. 第一个程序和函数:    在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如:    /> l ...

  5. lua闭合函数

    function count( ... ) return function( ... ) i = i+ return i end end local func = count(...) print(f ...

  6. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  7. Lua基础

    局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...

  8. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  9. Lua基础(转)

    局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...

随机推荐

  1. 推荐系统第2周--itemCF和userCF

    推荐系统分类 基于应用领域分类:电子商务推荐,社交好友推荐,搜索引擎推荐,信息内容推荐基于设计思想:基于协同过滤的推荐,基于内容的推荐,基于知识的推荐,混合推荐基于使用何种数据:基于用户行为数据的推荐 ...

  2. Linux Shell编程第3章——正则表达式

    目录 正则表达式基础 正则表达式的扩展 通配 grep命令 正则表达式基础 Linux Shell以字符串作为表达式向系统传达意思.元字符(Metacharacters)是用来阐述字符表达式意义的字符 ...

  3. ceph存储安装配置

    1.修改yum源: 1.安装yum源:sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://dl.fedor ...

  4. Shiro理解与总结

    Feature Apache Shiro is a comprehensive application security framework with many features. The follo ...

  5. html 基础 超链接

    ***设置超链接的样式示例  a:link 超链接被点前状态 a:visited 超链接点击后状态 a:hover 悬停在超链接时 a:active 点击超链接时 在定义这些状态时,有一个顺序l v ...

  6. vue-scroller的使用

    一 安装 使用npm 安装 npm install vue-scroller -S 二 引入 https://www.jianshu.com/p/a39f5276ff0b https://www.np ...

  7. JS与Jquery 中的extend用法不同

    1, Jquery //jQuery 应用扩展   jQuery.extend({                  // 定义setApDiv     setApDiv:function () {  ...

  8. jQuery动态网址标签

    在线演示 本地下载

  9. [Android]热修复框架AndFix测试说明

    AndFix,全称是Android hot-fix.是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug.支持Android 2.3 到 6.0,并且支持arm 与 X86系 ...

  10. 记一次如何解决低版本jar包里面的bug,不适宜替换成高版本的经历

    背景:目前正在迭代开发的项目,应用户要求新增一个电子文档转换的功能,即将不标准的excel文件转换为标准的excel文件(标准模板). 选择:pio ,本项目里面本来就有poi的jar包 问题:项目里 ...