-recurrsive

function fib(n)
if n < then return end
return fib(n - ) + fib(n - )
end

-closure

示例一

function newCounter()
local i =
return function() -- anonymous function
i = i +
return i
end
end c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2 示例二 function myPower(x)
return function(y) return y^x end
end power2 = myPower()
power3 = myPower() print(power2()) --4的2次方
print(power3()) --5的3次方

-函数的返回值

可以一条语句上赋多个值

name, age, bGay = "haoel", , false, "haoel@hotmail.com"

因为只有3个变量,所以最后一个被舍去

函数可以返回多个值

function getUserInfo(id)
print(id)
return "haoel", , "haoel@hotmail.com", "https://coolshell.cn"
end name, age, email, website, bGay = getUserInfo()

这里没有传id进去,所以函数中的id输出为nil,而且返回的值里也没有bGay的值,所以bGay也是nil

-局部函数

函数前加上local就是局部函数

以下两个函数是一样的

function foo(x) return x^ end
foo = function(x) return x^ end

[Lua快速了解一下]Lua的函数的更多相关文章

  1. [Lua快速了解一下]Lua运行

    -Lua的Hello World print("Hello World") 分号可选 -类似python,进入Lua后再shell中打命令执行语句也可 > print(&qu ...

  2. [Lua快速了解一下]Lua的model

    我们可以直接使用require(“model_name”)来载入别的lua文件,文件的后缀是.lua.载入的时候就直接执行那个文件了.比如: 我们有一个hello.lua的文件: print(&quo ...

  3. [Lua快速了解一下]Lua的OOP

    __index(a, b) 对应表达式 a.b 上面我们看到有__index这个重载,这个东西主要是重载了find key的操作.这波操作可以让Lua变得有点面向对象的感觉,让其有点像Javascri ...

  4. [Lua快速了解一下]Lua的MetaTable和MetaMethod

    MetaTable和MetaMethod是Lua中的重要的语法,MetaTable主要是用来做一些类似于C++重载操作符式的功能. 两个分数 fraction_a = {numerator=, den ...

  5. [Lua快速了解一下]Lua的Table

    Lua中的Table其实就是一个Key Value的structure haoel = {name=, handsome=True} -table的CRUD操作 haoel.website=" ...

  6. [Lua快速了解一下]Lua的控制语句

    -Lua中没有++或者--的骚操作 -while loop sum = num = do sum = sum + num num = num + end print("sum =" ...

  7. [Lua快速了解一下]Lua的语法

    -注释 -- 两个减号是行注释 -块注释 --[[ 这是块注释 这是块注释 --]] -变量 Lua的数字只有double型,64bits, Lua的字符串string支持双引号或者单引号 以下例子会 ...

  8. Lua 学习笔记(五)函数

    函数的定义:在Lua中,函数是一种对语句和表达式进行抽象的主要机制. 一.函数基本用法        在Lua中,      1.函数既可以完成某项特定的任务.(被视为一条语句)      2.也可以 ...

  9. Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]

    Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...

随机推荐

  1. kafka的OffsetOutOfRangeError

    from kafka import KafkaClient, SimpleConsumer from sys import argv kafka = KafkaClient("10.0.1. ...

  2. linux下安装mysql后 sql区分大小写

    Linux下的MySQL默认是区分表名大小写的,通过如下设置,可以让MySQL不区分表名大小写:1.用root登录,修改 /etc/my.cnf:2.在[mysqld]节点下,加入一行: lower_ ...

  3. 代做JSP课程设计,毕业设计

    代做JSP课程设计,毕业设计,大家都是学生,绝对靠谱,有意者加我Q 279283855

  4. 深入浅出 Java Concurrency (10): 锁机制 part 5 闭锁 (CountDownLatch)

    此小节介绍几个与锁有关的有用工具. 闭锁(Latch) 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态.通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻 ...

  5. thinkphp5集成微信支付【公众号支付】快捷路径

    1 下载官方的测试用例PHP版 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 2 到vendor目录新建weixin文件夹 ...

  6. react之本地图片引用

    react之本地图片引用 <img src="../images/photo.png"/> 这种写法在react中是不支持的,所以引用本地图片需要用import或者re ...

  7. 控件的WndProc WindowProc

    SubClassWndProc This example shows how to use the WndProc method and the WindowProc property to subc ...

  8. 【源码阅读】Java集合之三 - ArrayDeque源码深度解读

    Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,本文是第三篇ArrayDeque. ---@pdai JDK版本 ...

  9. C++虚函数表理解

    一,思维模式图 二,代码验证 class A { public: A(int x) { fProtected = x; } float GetFProtected() { return fProtec ...

  10. Pycharm 激活码 2019年1月9日16:57:13

    K03CHKJCFT-eyJsaWNlbnNlSWQiOiJLMDNDSEtKQ0ZUIiwibGljZW5zZWVOYW1lIjoibnNzIDEwMDEiLCJhc3NpZ25lZU5hbWUiO ...