第一类值:在lua中,函数与其它数据类型(数字,字符串)一样,可以存放在变量中,可以存放在table中,可以作为实参,还可以作为函数返回值
词法域:嵌套的函数可以访问他外部函数的变量
非局部变量:
names = {"kate", "john"}
grades = {kate = 6, john = 9}
function sortbygrade(names,grades)
table.sort(names,function(n1,n2)
return grades[n1]>grades[n2]
end)
end
grades是sortbygrade函数的局部变量,但传递给table.sort的匿名函数却可以访问grades,在这个匿名函数内部,grades不是全局变量也不是局部变量,称为“非局部的变量”
1、闭包(closure)
定义:一个函数加上该函数所需访问的所有“非局部变量”
function newCounter()
local i = 0
return function()
i = i + 1
return i
end
end
c1 = newCounter()
print(c1()) --->1
print(c1()) --->2
c2 = newCounter()
print(c2()) ---->1
print(c1()) ---->3
c1 c2是同一个函数所创建的两个不同闭包,各自拥有独立的局部变量i的实例
2、非全局的函数
local f = function(arg)
...
end 等效于
local function f(arg)
...
end
也等效于
local f
f = function(arg)
...
end
3、正确的尾调用:不耗费栈空间
只有:return <func>(<arg>) 这样的形式才是尾调用
return g(x) + 1 -->必须做一次加法操作:不是尾调用
return (g(x)) -->必须调整一个返回值:也不是尾调用
return g(x) -->正确的尾调用
分享到:
相关推荐
"LUA进阶源代码欣赏"是一个面向LUA初学者和有一定经验的开发者的学习资源,旨在通过分析和解读源代码,提升对LUA语言深入理解和应用的能力。 1. **函数与表** LUA中的函数是一等公民,可以作为变量存储、作为参数...
在学习Lua之前,建议具备一定的编程基础,了解基本的编程概念,如变量、函数、循环等。此外,熟悉C语言或其他高级语言也有助于更好地理解Lua的特性和使用方式。 通过上述介绍,我们了解到Lua不仅是一门功能强大的...
Lua 语言进阶教程 - 语法基础和运算符重载 Lua 语言是一种轻量级的脚本语言,广泛应用于游戏开发、嵌入式系统和其他领域。为了深入掌握 Lua 语言,需要了解其语法基础和运算符重载。 Lua 语法基础 Lua 语言的语法...
本资源包是针对Lua语言的学习资料集合,旨在帮助初学者和进阶者深入理解并掌握Lua编程。 首先,从标题和描述中我们可以看出,这个资料包专门针对Lua学习,反复提及“lua学习资料”,表明其内容可能包括教程、示例...
Lua是一种轻量级的脚本语言,广泛应用于游戏开发、嵌入式系统和服务器配置等领域。这个"lua学习库文档资料"压缩包包含了对Lua语言关键部分的...因此,这个压缩包提供的文档资料是Lua初学者和进阶者不可多得的学习资源。
这个"Lua学习框架代码"提供了一个基础的学习平台,帮助初学者更好地理解和掌握Lua编程。下面将详细介绍Lua的一些核心概念和特性,以及如何通过这个框架进行学习。 1. Lua的基础语法: - 变量:Lua中的变量没有类型...
cocos2d-x进阶教程1_4Lua中函数、条件判断语句.mp4 cocos2d-x进阶教程1_5Lua中循环语句和逻辑运算关键字.mp4 cocos2d-x进阶教程1_6LuaTable使用1.mp4 cocos2d-x进阶教程1_7LuaTable使用2.mp4 cocos2d-x进阶教程1_8...
2. **PPT**: PPT可能包含LUA基础语法、进阶特性、在Unity中的应用案例等内容,是系统学习和复习的好资料。 3. **工具**: 工具可能包括LUA编辑器、调试器、性能分析工具等,这些工具能帮助开发者更有效地编写和调试...
通过这些材料,你可以系统地学习Lua的语法、数据类型、控制结构、函数、表(Lua的核心数据结构)以及模块和包的使用。 在描述中提到“很详细”,意味着这些课件可能包含了从基础知识到进阶主题的全面讲解,比如元表...
这款"lua练习器"是用易语言编写的,为初学者和进阶者提供了方便的环境来练习和测试LUA代码。 在LUA中,语法简洁明了,其主要知识点包括: 1. 变量与数据类型:LUA支持五种基本数据类型,即nil、boolean(布尔型)...
# Lua进阶教程(五)数据库编程知识点解析 ## 一、引言 在软件开发过程中,数据库的应用极为广泛,特别是在需要存储大量数据且要求高效处理的场景中。`Lua`作为一种轻量级且易嵌入的脚本语言,在游戏开发、系统...
这个"lua学习源码.zip"压缩包包含了多个与Lua编程相关的源代码文件,覆盖了从基础到进阶的主题,有助于深入理解Lua的语法和特性。 首先,让我们逐一解析这些文件名中的知识点: 1. **03_字符串操作.lua**:这个...
### Lua 进阶教程(一)调试 #### 引言 在软件开发过程中,调试是一项不可或缺的技能。Lua作为一种简洁高效、易于嵌入的脚本语言,在游戏开发、Web应用等多个领域有着广泛的应用。Lua虽然小巧,但在调试方面却提供...
7. **Lua中文教程**:压缩包中的“Lua中文教程”可能是对Lua语言进行全面讲解的文档,包括基础语法、进阶特性、集成实践等内容,是学习和掌握Lua的好资源。 总之,通过学习和实践Lua,开发者能够有效地将脚本语言的...
**正文** Lua是一种轻量级的、嵌入式的脚本语言,主要...提供的“Lua电子教程”文件应该包含更多细节,包括实例代码和解释,是学习和进阶Lua的好资源。建议读者结合此教程,逐步探索和实践,从而更好地理解和运用Lua。
#### 五、如何有效学习Lua - **阅读官方文档**:官方文档是学习任何编程语言的最佳起点。 - **实践操作**:理论知识结合实际编程练习才能真正掌握一门语言。 - **参与社区**:加入Lua相关的论坛或社群,与其他开发者...
通过本教程的学习,我们了解了Lua在Web开发中的应用,特别是在使用Orbit框架构建复杂Web应用时的方法和技巧。Lua作为一种灵活的语言,在Web开发中展现出巨大的潜力。希望本教程能帮助读者更好地掌握Lua Web开发的...
这篇博客没有提供具体描述,但我们可以从标签中推测内容可能涵盖了Lua语言的基础元素和一些进阶特性。"源码"可能涉及Lua的源代码解析,"工具"可能涵盖使用Lua作为工具脚本的情况。 【标签】: 1. **源码**:在学习...