lua函数精讲(二)
来源:互联网 发布:qt淘宝互刷 编辑:程序博客网 时间:2024/06/06 08:58
Lua中的函数带有词法定界的第一类值。
第一类值: 在Lua中,函数和其他值(数值,字符串)一样,函数可以被存放在变量中,也存放在表中, 可以作为函数的参数,还可以作为函数的返回值。
词法定界:被嵌套的函数可以访问他外部函数的变量。
lua的函数也可以是匿名的,当我们提到函数名时,实际上是说一个指向函数的变量。
闭包
词法界定加上第一类函数是一个功能强大的概念。
function sortbygrade(names, grades)
table.sort(names, function(n1,n2)
return grades[n1]>grades[n2]
end)
end
在匿名函数内部grades称为是外部的局部变量或upvalue
闭包在上下文环境中提供很有用的功能。可作为高级函数的参数,可作为函数嵌套的函数(比如返回一个闭包),可以作为回调函数。利用闭包可以重新定义某个函数,当别人调用某个函数时,调用到自己定义的做了安全检查的函数,从而创建了一个安全的环境(沙箱)
do
local oldopen = io.open
io.open = function(f,m)
if access_ok(f,m) then
return oldopen(f,m)
else
return nil, "access denied"
end
end
end
非全局函数
函数作为table的域(大部分lua库函数使用这种机制实现的。如io.read,math.sin)
有3种语法方式:
1.
1.
lib = {}
lib.foo = function(x,y) return x+y end
2.
lib = {foo = function(x,y)return x+y end}
3.
lib = {}
function lib.foo(x,y)
return x+y
end
(完)
0 0
- lua函数精讲(二)
- lua函数精讲(一)
- Lua基础 函数(二)
- Lua基础 函数(二)
- Lua 5.1 API函数(二)
- Lua基础 函数(二)
- lua学习笔记二--函数
- lua 函数初识(二)
- printf函数精讲
- lua脚本语言学习笔记(二)---LUA函数\数组\迭代器
- lua堆栈操作常用函数学习二
- bind9配置精讲(二)
- UIBezierPath精讲(二)
- UIBezierPath精讲(二)
- c++ string函数精讲
- mysql函数大全精讲
- Python冒泡算法精讲<二>
- Lua进阶(二)——函数环境、包
- 排序算法之插入排序
- 职场与生活 八条原则 让你不再浪费时间和提高效率
- Android 使用DebugLog,让你输出调试信息更方便、清晰
- Unity3D -- 图形 -- Camera
- 爸爸的素质决定孩子飞多高,爸爸们请反复看!!!
- lua函数精讲(二)
- 【推荐】程序员/设计师能用上的 75 份速查表
- 校验码概述
- 平均要取多少个(0,1)中的随机数才能让和超过1
- 理解映射方式、设备坐标系、逻辑坐标系、设置逻辑坐标原点与设备坐标原点
- Java基础-->面向对象<继承,内部类,多态,包,抽象与接口>
- 花生壳使用教程,动态IP无公网IP时发布网站访问内网
- 这是我第一次写的博客
- 多线程的学习