Lua 函数

函数(子程序) 是一段可以执行的代码,他通常包含函数名,出入参数,函数体,返回值(传出参数)。他可以方便代码管理,把常用的代码写成函数方便重复利用。
内容摘要:函数 函数定义 函数调用 函数参数

函数定义:

funcname = function( [parlist1] ) 
    funcbody  
end

函数名 funcname ::= Name {'.' Name} [':'Name]
形参 parlist1 ::= namelist [`,´ `...´] | `...´

函数实例
  --~ 一个简单的函数包含一些常用的基本信息
  --~ 传入任意多的整数然后求和
  addsum = function (a,...)
      local arg={...};
      local sum = a;
      for i, v in ipairs(arg) do
           sum = sum + v
      end
      if(#arg > 0) then
          --返回多值
          return sum,#arg
      else
          --返回单值
          return sum
      end
end

r1,r2 = addsum(1,2)      --结果 3
print(r1,r2)          --结果 3    nil
r1 = addsum(1,2,3,4)     --结果 10 
print(r1,r2)          --结果 3    2

函数调用

Lua的函数调用的语法如下:

形式一:直接调用

functioncall ::= functionname '(' args ')'
函数调用的第一步是对 functionname 和args求值。 如果 functionname的值的类型是 function类型, 那么这个函数就被用给出的参数调用。 否则 functionname的元方法 "call" 就被调用(具体信息查看Metatable元表)。

形式二:方法调用

--定义为table的一个方法进行调用
functioncall ::= tablename'.'functionname '('args')'

--语法糖
functioncall ::= tablename':'functionname '('args')'
--他会程序被解释成 tablename.functionname(tablename,args)
--这里 tablename 只会被求值一次

参数传入和返回

--定义 
addsum(a)   return r1,r2,r3

s1,s2 = addsum(a,b)
-- 传入参数 b丢弃,传出参数 r3丢弃

s1,s2,s3,s4 = addsum(a,b,c)
-- 传入参数 b,c 丢弃,接收参数s4为nil

Lua 函数可以接受固定和可变数目的参数

  • 固定参数 提供具体的参数形参名称,在函数体内直接使用。
  • 可变参数 通过三个点(...) 表示,在函数体内直通过放入表{}中,然后可以通过泛型for循环 取出来使用。(参见本章示例)
  • Lua函数的传入、传出参数如果没有对应的接收参数将被丢弃。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数有两种用途: 完成指定任务,此时函数作为调用语句使用。 计算并返回值,此时函数作为赋值语句的表达式使用。 调用...
    JunChow520阅读 3,793评论 0 3
  • 伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。 在Lua中,函数是对语句和表...
    亮亮同学阅读 601评论 0 0
  • Lua 函数 作者:杨梦鸽 校对:翟舒青 在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特...
    木易林1阅读 426评论 0 0
  • 在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。 Lua ...
    谁说我是小小云阅读 320评论 0 0
  • 函数 在lua中,函数是对语句和表达式进行抽象的主要方法,皆可以用来处理一些特殊的工作,也可以用来计算一些值.主要...
    IT白鸽阅读 271评论 0 1