Lua 函数

简介: Lua 函数

1、概念

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。

Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。

Lua 函数主要有两种用途:

1.完成指定的任务,这种情况下函数作为调用语句使用;
2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。 

基本写法

function 函数名()
end

还有一种特殊写法

a(变量)=function()
end

==我感觉像lua这种随便的语言,写起来爽了,维护起来就要疯了0.0==
在这里插入图片描述

2、操作

2.1 无参数无返回值

--无参数无返回值
--跟C#不一样,lua是从上到下执行的,不能在一个函数之前调用函数
function F1()
    print("函数被调用")
end

F1()

还有另外一种写法

--这种写法可以把它理解为把名字提前写了(不完全是)
--有点类似于C#中的委托和事件,通过赋值的形式去等于一个函数
F2 = function()
    print("F2函数被调用")    
end
F2()

在这里插入图片描述

==注意:跟C#不一样,lua是从上到下执行的,不能在一个函数之前调用函数(会报错)==
因为lua是解释型语言,使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是像编译型语言在执行之前就完成翻译。
在这里插入图片描述

2.2 有参函数

--有参函数
--函数类型不指定,可以传任意的参数进去
function F1(a)
    print(a)
    end
F1(1)
F1('666')
F1(true)
F1(nil)
--像下面这两个操作这放在C#中肯定会报错
F1()--不会报错 只会补空nil 或者丢弃
F1(6,6,6)--不报错,传入参数与函数参数不匹配,取第一个参数

2.3 有返回值函数

--有返回值函数
function F2(a)
    return a
end
Temp = F2(666)
print(Temp)

在这里插入图片描述
我们再来搞点骚操作
我们return多个参数,但lua只返回了读取的第一个参数,相当于其他参数都被丢弃了
在这里插入图片描述
如果我们想要多个返回值
正确写法

function F2(a)
    return a,"123",true
end
--多返回值时 在前面申明多个变量来接取即可
--就一一对应了,在声明变量的时候也可以,比如a=1,b=2 ,直接写成a,b=1,2
Temp,temp2,temp3 = F2(666)
print(Temp)
print(temp2)
print(temp3)

在这里插入图片描述
==总结一下==
就是这个语言太随便了

  • 多返回值时,在前面申明相对应的变量来接取就行
  • 如果变量不够,不报错,直接接取对应位置的返回值(后面的都不要了)
  • 如果变量多了,不报错,直接赋值nil

2.4 获取函数类型

F3 = function ()
    print('lua真随便')
end

print(type(F3))

2.5 函数的重载(Lua不支持)

--lua不支持函数的重载
--函数名相同,参数类型不同或者参数个数不同叫函数的重载
--lua会默认调用最后声明的函数
--举个例子
function F4()
    print('hello')
end

function F4(str)
     print('Bye')
end
F()

在这里插入图片描述

2.6变长函数

--变长参数
--通过for循环把传进函数的参数都打印出来
function F5( ... )
    nums={...}
    for i=1,#nums do
        print(nums[i])
    end
end

F5(1,2,3,4,5,6)
print('--------------------------------------')
F5(6,"hello",true,nil)--不同参数也可以打印

nums的作用

在这里插入图片描述

在这里插入图片描述

2.6函数嵌套

--函数嵌套
function F6()
    return function ()
        print('嵌套函数')
    end
end

F7 = F6()
F7()

在这里插入图片描述


--闭包

--外部传进来的这个x实际上会产生一个临时变量,我们把这个X包裹到了function (y) return x+y  end这个函数里面
--相当去在这改变了传入参数的    生命周期
function F8(x)
    return function (y)
        return x+y
    end
end

F9 = F8(2)--按理说这个F8(2)执行完毕就没有用了,但我们改变了函数的生命周期,把那个2放到了function (y)这个函数里面去了
print(F9(1))--F9实际上执行的是 function (y)这个函数

在这里插入图片描述

相关文章
|
2月前
|
存储 C语言 图形学
C 函数中如何保存 Lua 的数据(1)
C 函数中如何保存 Lua 的数据(1)
38 0
|
6月前
|
存储 Java C语言
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
47 0
Lua 函数
Lua函数是主要的抽象机制,用于执行任务或计算值。函数定义格式包括可选的函数作用域(默认全局)、函数名、参数列表和函数体。例如,定义一个名为`max`的函数,接收两个参数`num1`和`num2`,返回它们中的最大值。函数可以作为参数传递,如示例中将`myprint`函数传递给`add`函数,实现功能组合。
|
3天前
|
C语言
Lua 函数
Lua中的函数支持可变参数,以三点(...)表示。函数既可完成任务,也可用于计算并返回值。例如,`add(...)`函数接受任意数量参数并返回它们的和。要处理可变参数,可以将其赋值给一个表,如`arg={...}`。计算平均值的`average(...)`函数展示了如何遍历和使用这些参数。通过`select("#",...)`可以获取参数数量,`select(n, ...)`则用于访问特定位置的参数。函数定义如`function fwrite(fmt, ...)`允许固定参数与可变参数结合使用。
|
6天前
|
C语言
Lua 函数
Lua中的函数支持可变参数,用三点`...`表示。函数可以用于执行任务或返回计算值。示例中展示了如何处理可变参数,如计算参数总和(`add`函数)和平均值(`average`函数)。`select("#",...)`用于获取参数数量,`select(n, ...)`用于获取从n开始的参数列表。`average`函数在不同实例中展示了使用可变参数的方式,始终返回参数的平均值。`fwrite`函数展示了固定参数与可变参数的组合使用。
|
2月前
|
C语言 C++ 索引
C 函数中如何保存 Lua 的数据(2)
C 函数中如何保存 Lua 的数据(2)
24 1
|
12月前
[✔️]lua中的module函数
[✔️]lua中的module函数
115 0
|
C语言 索引
lua语言——函数
lua语言——函数
118 0
|
XML Java 数据格式
【Lua基础 第4章】Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数
Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数
120 0
【Lua基础 第4章】Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数