- -- 定义函数
- --[[函数的定义格式如下:
- function funName(paral,para2,...)
- [函数体]
- end
-
- lua 函数基本性质:
- 1.函数无需定义返回类型,可以返回任意类型与任意数量的数据。
- 2.函数的参数,无需定义参数类型。
- 3.函数无需大括号。
- 4.可以定义变量,把函数直接赋值给它,从而获得相同功能。--]]
-
- print("定义第一个函数")
- function funName1()
- print('我是一个函数')
- end
- -- 调用函数
- funName1()
- print("定义第二个函数")
- -- 定义第二个函数(带有返回值)
- function funName2(num1,num2)
- print('我是一个函数,输出的参数='..num1,num2)
- return num1+num2
- end
- -- 调用函数
- num1 = 100
- num2 = 200
- result = funName2(num1,num2)
- print("函数返回数值是="..result)
- -- 函数赋值个变量
- fun3 = funName2
- --result1 = fun3(60,20)
- result1 = fun3('同学们','大家好') -- 报错!
- print('一个新的变量得到函数的引用 result1='..result1)
- -- 注意:函数中由于我们函数的参数没有类型,所有在没有(编译)运行前,计算机是无法发现错误,这在C#/java等编译型语言中,是一个明显弱点。
复制代码- -- 函数的多返回值
- --[[一个函数返回多个数值,可以使用多个变量直接接收
- eg:
- function GetNumber()
- return 100,200
- end
- num1,num2 = GetNumber()
- print(num1.num2)
-
- 函数多返回值性质
- 1.如果一个函数调用在最后,或者仅有一个表达式,则lua会保留尽可能多的返回数值,用于匹配。
- 2.如果一个函数没有返回值,或者没有足够的返回数值,那么lua会用nil 来补充缺失数值。--]]
- --函数的多返回数值
- function GetNumber()
- return 10,20,30,40
- end
- -- 测试
- res1,res2,res3 = GetNumber()
- print(res1,res2,res3)
- -- 函数的赋值:函数可以作为数据进行赋值,也可以作为参数进行传递(相当于C#的委托)
- -- 学习函数作为参数。
- function PrintInfo(result)
- print('计算的结果')
- print(result)
- end
- -- 加法函数
- function AddNum(num1,num2,printFunc)
- local result = num1+num2
- -- 输出
- printFunc(result)
- end
- -- 减法函数
- function SubNum(num1,num2,printFunc)
- local result = num1-num2
- -- 输出
- printFunc(result)
- end
- AddNum(1,2,PrintInfo) -- 加法函数“PrintInfo”就是一个函数作为参数进行调用
- SubNum(4,2,PrintInfo) -- 减法函数
复制代码- -- 函数全局与局部变量
- -- 学习local 关键字,学习全局与局部变量
- --[[lua中定义的变量默认都是全局变量,且在函数内部定义的变量也默认是全局变量。
- 在函数中定义的全局变量,在函数外部照样可以访问。
- 函数可以声明为全局的与局部的,默认都是全局的。
- eg:local function LocFunc()--]]
- function fun4()
- print('这是func4 函数')
- gNum1 = 10 -- lua语言规定:变量默认都是全局变量,无论是否定义在语句块中。
- local num2 = 20 -- 使用local 关键字 定义局部变量。局部变量不能再函数的外部使用。
- end
- -- 调用
- fun4()
- -- 测试全局/局部 变量
- print('num1='..num1) -- num1 输出10 表示num1 是全局变量。
- print('num1='..num2) -- num2 报错无法输出。
- -- 局部函数
- -- function 前面可以加个local 表示:“局部函数”
复制代码- -- 匿名函数
- --[[匿名函数定义:没有函数名称的函数
- 匿名函数如何调用?
- 一个没有名称的函数,只有通过赋值给一个变量(相当于C#的委托注册方法),我们通过这个(函数)变量来简介调用这个匿名函数。--]]
-
- -- 学习匿名函数
- hedeFunc = function (num1,num2)
- print('我是一个匿名函数')
- print(num1+num2)
- end
- -- 调用匿名函数(本质调用的是匿名函数赋值给的变量)
- hedeFunc(66,88)
复制代码
|