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

时间: 2016-05-29

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

DDD关键知识点整理汇总

创建领域对象采用构造函数或者工厂,如果用工厂时需要依赖于领域服务或仓储,则通过构造函数注入到工厂: 一个聚合是由一些列相联的Entity和Value Object组成,一个聚合有一个聚合根,聚合根是Entity,整个聚合被看成是一个数据修改的单元,也就是说整个聚合内的所有对象要么同时被保存,要么都不能保存,即保存到数据持久层时必须以覆盖的方式来保存,而不是追加方式或合并的方式来保存,否则无法确保聚合内的对象的数据一致性.另外,整个聚合的不变性约束由聚合根负责维护.作为推导的一个结论:我们不能只保

Lua中操作字符串的基本方法整理

  这篇文章主要介绍了Lua中操作字符串的基本方法整理,是Lua入门学习中的基础知识,需要的朋友可以参考下 字符串是一个字符序列,以及控制字符.字符串可以用三种形式被初始化,其中包括: 单引号之间的字符 双引号之间的字符 [] 之间的字符[[和]] 对于上述三种形式的一个例子如下所示. 代码如下: string1 = "Lua" print(""String 1 is"",string1) string2 = 'Tutorial' print(&

php的数组与字符串的转换函数整理汇总

以下是对php中的数组与字符串的转换函数进行了详细的整理汇总,需要的朋友可以参考下   1.将一个字符串转化为数组str_split()用于将一个字符串转化为数组语法: 复制代码 代码如下: str_split(string,length) <SPAN style="COLOR: #333333"><SPAN style="FONT-SIZE: 12px"><SPAN style="FONT-FAMILY: 宋体"&

JavaScript基础函数整理汇总_基础知识

这里给大家整理汇总了一些javascript的基础函数,都是比较常用和实用的.整理出来也有助于大家更好的理解javascript. 复制代码 代码如下: <script type="text/javascript">     /*创建函数和字面量函数*/     /*         function add(){             alert("函数创建成功")         };         var testfunction=functi

PHP面向对象中的重要知识点(三)

1. namespace:       和C++中的名字空间很像,作用也一样,都是为了避免在引用较多第三方库时而带来的名字冲突问题.通过名字空间,即便两个class的名称相同,但是因为位于不同的名字空间内,他们仍然可以被精确定位和区分.第一次看到PHP的名字空间语法时,感觉和C++相比在语法上是非常非常相似的,然而在写点儿小例子做做实验的时候才发现,他们的差别还是很大的,为了避免以后忘记,所以这里特别将其记录了下来.见如下代码:   复制代码 <?php //in Test2.php names

WPS表格中利用函数快速分类汇总复杂数据

在实际工作中,用户经常需要对WPS数据表中的明细数据进行汇总求和,如果用户希望对如图1的复杂数据明细表中所有小计项目进行快速汇总,可能不是一件容易的事情. 图1 用户数据明细表 下面将向用户介绍如何利用WPS表格的常用函数进行快速汇总. SUM函数快速汇总 WPS表格提供的SUM函数可以对用户选择的区域一次性添加公式,因此用户毋须分别对小计.合计和总计栏目手工输入,从而达到快速求和的目的. 选择数据区域 首先用户只需要将各个小计的区域逐步选定,区域选择的最终结果如图 2所示. 步骤1 先使用鼠标

Lua中使用二维数组实例

  这篇文章主要介绍了Lua中使用二维数组实例,本文直接给出代码实例,看代码更容易理解,需要的朋友可以参考下 在Lua中跟JS也是一样,没有二维数组的概念,但是二维数组对我们的开发又是极其的重要,当然,使用很多啦.谈谈在Lua中如何使用二维数组? 原理,一维数组里面给一个嵌套就是二维数组了,好,就那么简单,看看代码更容易理解 最近在做一个项目,如下是部分代码 ? 1 2 3 4 5 6 7 8 for i=1,10 do self.startMartix[i]={} self.star[i]={

浅析Lua中的迭代器

  这篇文章主要介绍了Lua中的迭代器,是Lua入门学习中的基础知识,需要的朋友可以参考下 迭代器是一种结构,使能够遍历所谓的集合或容器中的元素.在Lua中,这些集合通常是指那些用于创建各种数据结构,如数组表. 一般对于迭代器 一个通用的迭代器提供的键值对集合中的每个元素.下面一个简单的实例. 代码如下: array = {"Lua", "Tutorial"} for key,value in ipairs(array) do print(key, value) e

在Lua中使用模块的基础教程

  这篇文章主要介绍了在Lua中模块的基本使用方法,是Lua入门学习中的基础知识,需要的朋友可以参考下 什么是模块? 模块是一个像,可以使用需要加载并有包含表中的单个全局命名的库.该模块可包含若干函数和变量.所有这些函数和变量被包裹在以它作为一个命名空间的表.也是一个很乖的模块有必要的规定,返回此表上所需要的. Lua模块 表中的模块的使用可以帮助我们以多种方式,使我们能够操纵模块中我们操纵任何其他lua的表相同的方式.作为操纵模块的能力的结果,它提供了额外的功能的量等语言需要特殊的机制.由于l