Lua 复习 第一章
暑假的时候在家呆了半个月,准确的说应该是大三的暑假,在这半个月的时间里自学了lua.说起学习lua,也算是
自己第一次做的没有目的的学习吧,因为当时完全没有对lua的需求.以至于到现在都不知道当时是为什么学习lua
的,就如大二的时候学python一样.
现在就复习一下,然后找点东西写点代码. 关于学习lua,我只是看过<<lua程序设计>>这本书,另外看过lua的源码,
也只是一部分,并且没有认真的拜读巴西作者的神作.有时间应该把源码拿出来再看看,lua是用标准c写的,是很不错的
标准c教程.
今晚看了<<lua程序设计前三章>>,简单复习了一下,发现很多以前没有注意的一些细节,也许是因为时间久了,淡忘了.
不追究原因了,现在就重新来过一边吧,如果以后还是会忘记的话,记录下来也可以那过来做复习用.
1.关于lua语言的作者以及背景,就不多说了. lua大多都是作为脚本语言使用,一直都是配角,当然,也有些时候不是.像
<<愤怒的小鸟>>,就是完全使用lua开发的.
2."/usr/bin/env lua"这句是什么意思呢?
在<<lua程序设计>>中有说过,当作为脚本使用的时候,需要在脚本开始添加这一句.熟悉linux shell脚本都知道,在
编写脚本文件的时候,需要在脚本文件头添加一句,用来标识脚本解释器的路径.换句话说,可以使用"/usr/bin/lua"来
代替上面这句.那么下面就有个问题了,"env"是什么东西? 是工具,至于这个工具是用来做什么的.可以在终端执行一下
来看看.
1 DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path 2 XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg 3 PATH=/usr/local/cuda-5.0/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 4 DESKTOP_SESSION=ubuntu 5 PWD=/home/respawn/lua_workplace/HelloWorldLua 6 XMODIFIERS=@im=fcitx 7 GNOME_KEYRING_PID=1715 8 LANG=zh_CN.UTF-8 9 MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path 10 UBUNTU_MENUPROXY=libappmenu.so 11 COMPIZ_CONFIG_PROFILE=ubuntu 12 GDMSESSION=ubuntu
很容易看出来,上面是一系列和系统相关的配置,相信对于不同版本的linux都是不同的,当然我的是ubuntu.
所以当需要将lua作为脚本使用的时候,可以使用"/usr/bin/lua","/usr/local/bin/local"等这种方式来表示lua解释器,
但是这么做都依赖系统版本,所以使用env可以让我们的脚本移植性更好.
3.lua数据类型.
lua中有8种数据类型,分别是:nil,boolean,number,string,userdate,function,thread,table.其中最重要的就是table.
(ps:变量没有预定义类型.)
4.关于table的语法糖区别:
a.x 和 a[x] 的不同?
1) a.x 表示的是a["x"],表示的是用字符串"x"索引table.
2) a[x] 表示的是按照变量x的值索引.
这两者之间的区别最简单的直观理解就是使用第二种情况需要变量x已预先被初始化,否则索引结果为nil,而第一种情况
则需要索引中有"x".所以索引一个table,使用语法糖方法比较简单,省去操作.
其他信息请参照书本<<lua程序设计>>进行学习.