美文网首页
Lua中的函数拾遗

Lua中的函数拾遗

作者: 泱千澈 | 来源:发表于2019-04-04 23:59 被阅读0次

函数

  • 例一
function hello()
   print('hello')
end

 hello '3'
 hello {}
 -- hello 3

hello函数不接收参数,调用:hello(),虽然hello不接收参数,但是还可以可以传入参数:hello(32)
测试结果如下



另外如果只传递一个参数可以简化成functionname arg的调用形式(注意数值不行, 从gif可以看出,去掉注释会报错)
但是arg不能为变量名,使用报错


  • 例二
function f()
  return 1,2,3
end

t = {f()}
print(t[1], t[2], t[3])

t = {f(), 4}
print(t[1], t[2], t[3])

t = {f(), f()}
print(t[1], t[2], t[3], t[4], t[5], t[6])

运行结果如下



结论:只有最后一项会完整的使用所有返回值(假如是函数调用)。

  • 例三
print(select('#', 1,2,3))
print(select('#', 1,2, nil,3))
print(select(3, 1,2, nil,3))
print(select(2, 1,2, nil,3))

运行结果



结论:select('#', …)返回可变参数的长度,select(n,…)用于访问n到select('#',…)的参数

局部函数

local lf
lf = function(n)
   if n <= 0 then
     return
   end
   print 'hello'
   n = n -1
   lf(n)
end
lf(3)
运行结果

应该首先声明local lf, 在进行赋值。Lua支持一种local function(…) … end的定义形式

尾调用

--[[function f(n)
   if n <= 0 then
      return 0
   end
   
   a = f(n-1)
   return n * a
end
f(10000000000)
--]]

function f(n, now)
   if n <= 0 then
     return now
   end
   
  return f(n-1, now*n)
end
f(10000000000, 1)

递归函数没有使用尾递归,而参数为大数时,堆栈溢出;优化为尾递归,运行n久也无堆栈溢出。

参考网站

Lua中的函数(function)、可变参数、局部函数、尾递归优化等实例讲解
Lua测试

相关文章

  • Lua中的函数拾遗

    函数 例一 hello函数不接收参数,调用:hello(),虽然hello不接收参数,但是还可以可以传入参数:he...

  • Lua中的CAPI概述

    头文件lua.h: Lua提供的基础函数,包括创建Lua环境,调用Lua函数,读写Lua环境中的全局变量,以及注册...

  • lua基本函数说明

    lua函数说明 部分lua函数在lua的dash文档中没找到或者没有使用例子,特记录,备忘; getfenv(f)...

  • 函数

    Lua 函数 在Lua中,函数是对语句和表达式进行抽象的主要方法 Lua 提供了许多的内建函数,你可以很方便的在程...

  • 2018-08-02

    Lua中的函数 前面已经介绍过了lua语言中定义函数的关键字为 funtion -- function defi...

  • C API-调用LUA函数

    lua_pcall 函数 lua_pcall 可以执行lua代码 前面的例子中load时就执行了lua脚本或者lu...

  • JS函数charCodeAt的Lua实现

    JS函数charCodeAt的Lua实现 charCodeAt by Lua @(Lua JavaScript ...

  • lua函数调用

    Lua 中的函数调用的语法如下: functioncall ::= prefixexp args 函数调用时,第一...

  • 三、Lua调用C++函数

    上一篇文章中我们已经知道了,C++怎么调用Lua中的函数,接下来我们学习一下,Lua怎么调用C++中的函数。 这篇...

  • Lua_API lua_call & lua_callk

    开篇 今天来简单了解一下 Lua 的函数调用:lua_call。 解析 函数调用协议 void lua_call ...

网友评论

      本文标题:Lua中的函数拾遗

      本文链接:https://www.haomeiwen.com/subject/yruciqtx.html