Lua语言从一开始就被设计为能与c/c++及其他常用语言开发的软件集成在一起使用的语言。Lua语言作为一门胶水语言,支持组件化的软件开发方式,通过整合已有的高级组件可以轻松构建新的应用。在软件中台化开发模型中,Lua势必会扮演十分重要的角色。
当然,Lua还有其他特性和优点, Lua的运用场合也有其他,这里就不再赘述,接下来进入正题。
1、Lua解析器
说明:我的环境中/usr/local/bin/lua是5.3版本的Lua,/usr/bin/lua是5.1.4版本的Lua。默认是运行/usr/local/bin/lua。另外,同样是15的平方,5.3版本的Lua运算结果是225.0,在这之前的版本是225,这个跟版本的默认数值类型有关,后续会介绍。
在交互模式下,解析器会把我们输入的每一行当作完成的chunk或者表达式执行,若发现我们输入的某一行不完整那么它会等到chunk或者表达式完整后再进行解释执行。在http://www.lua.org/ftp/上可以下载到Lua的源代码,编译生成的lua可执行程序即为Lua解析器。Lua可执行程序的完整参数为:
lua [options] [script [args] ]
Lua程序可以通过预先定义的全局变量arg去解析器传入的用户参数,例如:
$ lua test.lua a b c
解析器在运行代码前创建一个名为arg的表,其中存储了所有命令行参数,索引0中保存的内容为脚本名称,索引1中保存的内容为a,以此类推;在脚本名称之前的所有选项则位于负数索引值之上,如:
$ lua -e “sin=math.sin” test.lua a b c
解析器获取参数:
arg[-3]= “lua” arg[-2]= “-e” arg[-1]= “sin=math.sin” arg[0]= “test.lua” arg[1]= “a” arg[2]= “b” arg[3]= “c”
2、类型和值
c/c++中定义一个变量必须指明该变量的类型(以让编译器明确该变量占据的内存大小),但在Lua中却不需要该指明。Lua语言是一种动态类型语言,在这种语言中变量不需要定义类型,不过每个值还是带有其自身的类型信息。
使用未经初始化的全局变量也不会导致报错,当使用未初始化的全局变量时得到结果是nil;Lua使用nil来表示无效值,把nil赋给全局变量时Lua会回收该全局变量。不过,我们不提倡将一个变量用作不同类型,因为会降低代码的可读性。
Boolean类型的值只具有两个取值情况,即true和false,需要注意的是,Lua中将Boolean值false和nil外的所有值都视为真,零值和空字符串也被视为真。
跟c/c++类似,Lua的and和or也支持短路原则,即只有在必要时才对第二个操作数进行求值。
参考书籍:《Lua程序设计》(Roberto lerusalimschy著)
本文摘自公众号Linux开发者札记。如果觉得本文对你有点用处,欢迎关注。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208059.html原文链接:https://javaforall.net
