Programming in Lua First Edition
Part I · The Language
1 - Getting Started
1.1 Chunks
- 在lua命令中
-l
选项会调用require
函数- e.g.
prompt> lua -i -la -lb
-i
:Lua运行指定代码段后进入交互模式
- e.g.
- 另一个link外部代码段的方式是使用
dofile
函数 - 在调试/测试时使用
-i
和dofile
非常方便
1.2 Global Variables
1.3 Some Lexical Conventions(词法约定)
Lua大小写敏感
以下划线开头的大写字母标识符是Lua保留字的命名风格,因此要避免使用
1.4 The Stand-Alone Interpreter
lua [options] [script [args]]
-e: 直接将命令传入Lua(e.g.
prompt> lua -e "print(math.sin(12))"
)-l: 使用require加载一个文件
-i: 进入交互模式
全局变量arg存放Lua的命令行参数,脚本名索引为0:
prompt> lua -e "sin=math.sin" script a b
args[-3] = "lua"
args[-2] = "-e"
args[-1] = "sin=math.sin"
args[0] = "script"
args[1] = "a"
args[2] = "b"
2 - Types and Values
Lua的8个基本类型:nil, boolean, number, string, userdata, function, thread, table
type()以字符串形式输出参数的类型
2.1 Nil
2.2 Booleans
- 在控制结构的条件中,nil和false为假,其他值都为真
2.3 Numbers
表示实数。一般有个错误的看法 CPU 运算浮点数比整数慢。事实不是如此,用 实数代替整数不会有什么误差(除非数字大于 100,000,000,000,000)
数值常量的小数部分和指数部分都是可选的:e.g.
0.3e12
,5e+20
2.4 Strings
Lua字符串为byte序列。#运算符总是返回字符串的byte长度,在某些编码下byte长度与字符个数不一致
UTF-8编码:
最多用4 byte为一个字符编码
128个US-ASCII字符:1 byte
带有附加符号的英文字符:2 byte
其他基本多文种平面中的字符(大部分常用字,汉字等):3 byte
Lua String是不可更改的,可以用新变量存储修改后的字符串
Lua可以高效地处理长字符串
转义符:
\
运行时,Lua 会自动在String和Number之间自动进行类型转换
2.5 Table
table是Lua唯一的数据结构
Lua 表总是“匿名”的,表变量只是表本身的一个引用。当程序中的表不再被引用,Lua 的内存管理机制最终会删除表并释放表所占用的内存空间。
Lua用1来索引数组的第一个元素
2.6 Function
- 函数是第一类值(和其他变量相同),所以函数可以存储在变量中,有很大的灵活性
评论
发表评论