Lua程序员提示

作者:— simonw 2006-11-07 04:18:02

查看本文的版权约束。

前言

本文为有其他语言经验的程序员提供了一个快速了解Lua小特性的入口, 通过这些你可以迅速发现Lua与你以前使用的语言的不同, 从而更好的应用.

目录

1. Lua程序员提示
1. 前言
2. 类型
3. 运算符
4. 表
5. 变量与赋值
6. 循环
7. 函数
8. 编译
9. MetaTable
10. 面向对象

类型

* 在控制结构的条件中除了false和nil为假,其他值都为真。
* Lua的numbers可以处理任何长整数不用担心误差。
* Lua中字符串是不可以修改的.1M的string在Lua中是很常见的。
* ..在Lua中是字符串连接符,当在一个数字后面写..时,必须加上空格以防止被解释错。
* 函数可以存储在变量中.

运算符

* and和or的运算结果不是true和false,而是和它的两个操作数相关。

* 第一个元素索引为1.不推荐数组下标从0开始,否则很多标准库不能使用。
* 表中的key和value可以为任意类型.

变量与赋值

* 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的那个文件或者文本串)。
* 给block划定一个明确的界限:do..end内的部分。

循环

* 循环过程中不要改变控制变量的值,那样做的结果是不可预知的。

函数

* 一个return语句如果使用圆括号将返回值括起来也将导致返回一个值。
* Lua将函数的参数放在一个叫arg的表中,除了参数以外,arg表中还有一个域n表示参数的个数。
* 尾调用之后程序不需要在栈中保留关于调用者的任何信息, 尾调用递归的层次可以无限制的。

编译

* 如果我们运行一个文件多次的话,loadfile只需要编译一次,但可多次运行。dofile却每次都要编译.
* Lua把每一个chunk都作为一个匿名函数处理。
* loadfile和loadstring都不会抛出错误,如果发生错误他们将返回nil加上错误信息.
* loadstring总是在全局环境中编译他的串。
* 当错误发生时Lua结束当前的chunk并返回到应用中。

MetaTable

*

Lua选择metamethod的原则:如果第一个参数存在带有add域的Metatable则使用他, 和第二个参数无关. 否则看第二个参数是否存在带有add域的metatable, 有则使用没有则报错.

面向对象

* Lua提供了通过使用冒号操作符来隐藏self这个参数的声明。
* Lua不存在类的概念,每个对象定义他自己的行为并拥有自己的形状(shape)。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License