posts - 9,comments - 14,trackbacks - 0

Programmming in Lua学习笔记

author:阵雨 2005年11月17日2:34:46

第0章 序言


Lua所提供的机制是C不善于的:高级语言、动态结构、简洁,易于测试和调试。
正因为如此,Lua具有良好的安全保证,自动内存管理,简便的字符串处理功能
以及其他动态数据的改变。
Lua具有可扩展、简单、高效、跨平台的特点。

第 1 章  起点


一个Chunk可以是一个语句,也可以是一系列语句的组合,还可以是函数,Chunk可以很大,在Lua中几个Mbyte的Chunk
是很常见的。

全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始值的全局
变量也不会出错,只不过的得到的结果是:nil。
如果想删除一个全局变量,只需要将变量赋值为 nil.


第 2 章 类型和值


每个语句结尾的分号 ';' 是可选的,但是如果同一行有多个语句最好用' ; '来将其隔开

Lua是动态类型语言,变量不要类型定义。lua中有8种基本类型分别为:

nil ,boolean ,number, string,userdata,function,thread,table

变量没有预定义的类型,每一个变量都可能包含任一种类型的值,例如:

print(type(a))  -->nil ('a' is not initialized)
a
=10

print(type(a))  -->number
a
="a string"

print(type(a))  -->string
a
=print  -->yes ,this is
 valid!
a(type(a)) 
-->function

我们可以使用function像使用其它值一样使用

Nil 
Lua中特殊的类型,它只有一个值:nil,一个全局变量没有被赋值以前默认值为nil

Booleans 两个取值 false 和 true ,但要注意Lua中 “所有的值”都可以用作为条件,在控制结构的
条件中除了false 和 nil 为假,其它值都为真,所以Lua认为0和空串都是真.

Lua的字符串可以包含任何数值的字符,包括嵌入的0,这意味着你可以存储任意的二进制数据在一个字符串里面。
字符串是不可以修改的,你可以创建一个新的变量来存储你要的字符串
Lua可以高效率的处理长字符串,1M大小的string在Lua中是常见的。
可以用单引号或者双引号来表示字符串 a="a lien" ,b='another line'
转义字符与C语言相同。
可以在字符串中使用\ddd (ddd为三位十进制数字) 方式来表示字母
还可以使用[[ ...]]来表示字符串,这种形式的字符串可以包含多行,也可以嵌套,
而且不会解释转移字符,如果第一个字符是换行符会被自动忽略掉,这种形式的字符串
用来包含一段代码是非常方便的
运行时,Lua会自动在stringnumbers之间自动进行类型转换,当一个字符串使用算术
操作符时,string会被转换成数字
尽管字符串和数字可以自动转换,但是两者是不同的,比如
10 ~= "10".

Lua通过引用比较tables userdata functions ,也就是说当且仅当两者表示同一个对象时
他们才相同,nil只和nil相等。如果两个值类型不同,Lua则认为他们不同


第 3 章 表达式


and 和 or 的运算结果不是true或者false,而是和它的两个操作数相关.
a and b  a or b  按照C语言的逻辑运算顺序计算,a、b两个表达式,计算到哪一个就返回哪一个的值
例如:a && b 如果 a为false,那么无须计算b 即可知表达式为false
所以 a and b的结果是如果a为false,则返回a,否则返回b

一个很实用的技巧,x = x or v
C语言中的 a ? b:c 等价于Lua中的 (a and b) or c

运算符的优先级(可惜没有位运算):

 ^
 
not -(unary)
 
* /

 
+ -
 ..
 
< > <= >= ~= ==
 
and
 
or

除了^和 .. 之外所有的二元运算符都是左连接的。

Lua中的表可以用字符串和数字作为index,如tt={name="table",["size"]=2,[3]="number"}
如果不使用数字表达式,Lua则自动从数字 1 开始作为index,如tt={"table",2} 那么tt[1]=="table,tt[2]==2
在构造函数中,域分隔符逗号(,)是可以用分号(;)替代的,通常我们用分号来分割不同类型的表元素。如:
tt={x=10,y=45 ; "one","two","three"}
The syntax var.NAME is just syntactic sugar for var["NAME"]:

posted on 2005-11-17 02:30 阵雨 阅读(2061) 评论(3)  编辑 收藏 引用 所属分类: Lua Programming

FeedBack:
# re: Programmming in Lua学习笔记(边学边更新ing。。。)
2006-08-30 20:40 | 看呢看呢
看呢看呢看呢  回复  更多评论
  
# re: Programmming in Lua学习笔记(边学边更新ing。。。)
2007-07-06 21:19 | nesh
博主在学LUA么?感觉这个语言怎么样啊。我也有意向学习呢。推荐本比较好的教材好么?  回复  更多评论
  
# re: Programmming in Lua学习笔记(边学边更新ing。。。)
2009-01-13 20:43 | luaer
lua社区
http://www.luabbs.com
lua开发者讨论区  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理