Lua中的函数相关知识点整理汇总_Lua

 函数是一组一起执行任务的语句。可以把代码放到独立的函数中。怎么划分代码功能之间的不同,但在逻辑上划分通常是让每个函数执行特定的任务。

Lua语言提供了程序可以调用大量的内置方法。例如,方法print()打印作为输入传参数在控制台中。

函数是已知的各种名称,如方法或子程序或程序等。
定义一个函数

在Lua编程语言中的方法的定义一般形式如下:

复制代码 代码如下:

optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)
function_body
return result_params_comma_separated
end

在 Lua 编程语言的方法定义包括方法头和方法体。这里是方法的所有部件

  •     可选函数适用范围:可以使用关键字本地范围的限制功能或忽略的范围部分,这将使它成为一个全局函数。
  •     函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  •     参数:一个参数是像占位符。当调用一个函数,将值传递给参数。这个值被称为实际参数或参数。参数列表是指类型,顺序和数量的方法的参数。参数是可选的;也就是说,方法可能没有参数。
  •     函数体:方法主体包含了定义方法做什么的语句的集合。
  •     返回:在Lua中可以通过下面的逗号分隔的返回值,return关键字返回多个值。

例子:

下面是一个函数的源代码调用max()。这个函数有两个参数num1与num2并返回两者之间的最大值:

复制代码 代码如下:

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end

函数参数:

如果一个函数使用参数,它必须声明接受的参数值变量。这些变量被函数的形式参数调用。

正式的参数表现得就像在函数内部其他本地变量和在进入函数创建并在退出时销毁。
调用函数:

当创建一个Lua函数,给什么样的功能,必须做一个定义。要使用一个方法,将不得不调用该函数来执行定义的任务。

当程序调用一个函数,程序的控制转移到被调用的函数。被调用函数进行定义的任务和在执行它的return语句或当其功能的终端到达时,程序控制返回到主程序。

而调用只是需要传递所需的参数以及方法名的方法,如果方法返回一个值,那么你可以存储返回的值。例如:

复制代码 代码如下:

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result;
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

当我们运行上面的代码中,将得到下面的输出。

复制代码 代码如下:

The maximum of the two numbers is  10
The maximum of the two numbers is  6

分配和传递函数

在Lua中,我们可以指定函数的变量,也可以将它们作为另一个函数的参数。下面是一个简单的例子,用来分配Lua传递一个函数作为参数。

复制代码 代码如下:

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end
myprint(10)
add(2,5,myprint)

当我们运行上面的代码中,将得到下面的输出。

复制代码 代码如下:

This is my print function -   ## 10 ##
This is my print function -   ## 7 ##

函数与变量参数

可以在Lua中创建一个具有可变参数的函数......作为它的参数。我们可以通过看一个例子,利用可变参数该函数将返回平均值。

复制代码 代码如下:

function average(...)
   result = 0
   local arg={...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

当我们运行上面的代码中,将得到下面的输出。

复制代码 代码如下:

The average is 5.5

时间: 2024-07-28 14:21:55

Lua中的函数相关知识点整理汇总_Lua的相关文章

Lua中的函数相关知识点整理汇总

  这篇文章主要介绍了Lua中的函数相关知识点整理汇总,包括函数的参数传递和定义函数等基本知识,需要的朋友可以参考下 函数是一组一起执行任务的语句.可以把代码放到独立的函数中.怎么划分代码功能之间的不同,但在逻辑上划分通常是让每个函数执行特定的任务. Lua语言提供了程序可以调用大量的内置方法.例如,方法print()打印作为输入传参数在控制台中. 函数是已知的各种名称,如方法或子程序或程序等. 定义一个函数 在Lua编程语言中的方法的定义一般形式如下: 代码如下: optional_funct

Lua中的常用函数库汇总_Lua

lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误

Lua中的函数精讲笔记_Lua

函数的用途: 1.完成指定的任务,这种情况下作为调用语句使用. 2.计算并返回值,这种情况下,函数作为赋值语句的表达式使用. 函数的参数为空,必须使用()表示函数调用.例外:当函数只有一个参数,并且这个参数是字符串或表构造时,()是可选的. lua提供了面向对象调用函数的语法 o:foo(x)与o.f(o,x)是等价的. lua函数的实参与形参的匹配与赋值语句类似,多余部分被忽略,缺少部分nil补足. lua函数可以返回多个值,return后列出要返回值的列表即可返回多值 复制代码 代码如下:

实现Lua中数据类型的源码分享_Lua

概述     在Lua中有8种基础类型:nil.boolean.number.string.userdata.function.thread和table.可以使用函数type查看某个变量或值的类型,返回相应的类型名称.像其他动态语言一样,在语言中没有类型定义的语法,每个值都携带了它自身的类型信息.下面将通过Lua 5.2.1的源码来看类型的实现.    源码实现      Lua将值表示成带标志的联合结构,代码如下(lobject.h): 90 /* 91 ** Union of all Lua

Lua中模块以及实现方法指南_Lua

从使用的角度来看,一个模块就是一个程序库,可以通过Lua自身提供的require来加载.然后便得到一个全局变量,表示一个table.这个table就是像一个名字空间,其内容就是模块导出的所有东西,例如函数和常量.简单的说,Lua中的模块就是一个table,table中可以包括任何东西.本文首先详细介绍模块相关的require函数,包括该函数的执行流程以及查找模块的路径,然后介绍了实现模块的三种方法,并给出相应的优缺点.  require函数      该函数用来加载一个模块,即按指定的路径和传入

Lua中的源代码预编译浅析_Lua

尽管Lua被称为是一种解释型的语言,但Lua确实允许在运行源代码之前,将源代码预编译成一种中间形式(类比Python的.pyc).区别解释型语言的主要特征在于编译器是否是语言运行时库的一部分,即是否有能力执行动态生成的代码(Lua可以通过dofile执行Lua代码).  其实,dofile的核心功能是由loadfile完成的,可以这样来定义dofile: loadfile并不是执行代码,而只是编译,返回一个函数,由dofile执行. 如果多次运行一个文件,可以只调用一次loadfile,重复调用

Lua中类的实现原理探讨(Lua中实现类的方法)_Lua

Lua中没有类的概念,但我们可以利用Lua本身的语言特性来实现类. 下文将详细的解释在Lua中实现类的原理,涉及到的细节点将拆分出来讲,相信对Lua中实现类的理解有困难的同学将会释疑. 类是什么? 想要实现类,就要知道类到底是什么. 在我看来,类,就是一个自己定义的变量类型.它约定了一些它的属性和方法,是属性和方法的一个集合. 所有的方法都需要一个名字,即使是匿名函数实际上也有个名字.这就形成了方法名和方法函数的键值映射关系,即方法名为键,映射的值为方法函数. 比如说有一个类是人,人有一个说话的

Lua中table的遍历详解_Lua

当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 复制代码 代码如下: for key, value in pairs(tbtest) do      XXX  end   for key, value in ipairs(tbtest) do      XXX  end   for i=1, #(tbtest) do      XXX  end   for i=1, table.maxn(tbtest)

Lua中调用C语言函数实例_Lua

在上一篇文章(C调用lua函数)中,讲述了如何用c语言调用lua函数,通常,A语言能调用B语言,反过来也是成立的.正如Java与c语言之间使用JNI来互调,Lua与C也可以互调. 当lua调用c函数时,使用了和c调用lua中的同一种栈,c函数从栈中得到函数,然后将结果压入栈中.为了区分返回结果和栈中的其他值,每一个函数返回结果的个数. 这里有个重要的概念:这个栈不是全局的结构,每个函数都有自己的私有局部栈.哪怕c函数调用了lua代码,lua代码再次调用该c函数,他们有各自独立的局部栈.第一个参数