版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25327609/article/details/85699407
基础概念
程序段
Lua语言执行的每一段代码,一个文件或者交互模式下的一行,称为程序段。
Lua保留字
and | break | do | else | elseif |
---|---|---|---|---|
end | false | goto | for | function |
if | in | local | nil | not |
or | repeat | return | then | true |
until | while |
注释
--单行注释 --注释部分
--print("enter:")
--多行注释--[[ 注释部分 ]]
--[[
number =20
print(fact(number))
]]
语句分割与缩进
在Lua中,连续语句的分隔符不必要,也可以使用";",同时换行也无作用。由于Lua语句都有end语句结尾,故不需要缩进与花括号,一般为了格式才设置缩进。
a=1 b=2 print(a) --放一行没问题
全局变量
Lua中,变量无须声明直接使用,未经初始化的全局变量得到nil值;当把nil赋值给全局变量时,GC回收该变量(不区分未初始化和被赋值为nil的变量)
print(a)
a=5
print(a)
a=nil
print(a)
--输出
nil
5
nil
类型与值
使用type来输出值的类型
Lua是一种动态类型语言,没有类型定义语句,值本身带有类型信息。
nil | boolean | number | string |
---|---|---|---|
userdata | function | thread | table |
nil与Boolean
nil:是一种表示无效值的状态。
Boolean:传统bool值,仍然有true,false.
值得注意的是:Lua中,将除了Boolean的false和nil外的其他值都视为true。(例如0和空字符串都是为true,同时Lua也支持传统的and、or、not逻辑运算。(and,or毫无疑问遵循短路求值)
注意的地方 :
逻辑运算符and的运算结果为:如果第一个操作数的运算结果为false,则返回第一个操作数,否则返回第二个操作数(注意是返回的是一个操作数,而不是一个操作数的逻辑结果,这与其他强类型语言c,c++,java不同)
逻辑运算符or的运算结果为:如果它的第一个操作数的逻辑值不为false,则返回第一个操作数,否则返回第二个操作数。(注意是返回的是一个操作数,而不是一个操作数的逻辑结果)
print(4 and 5)
print(nil and 'abc')
print(4 or 5)
print(nil or 'abc')
--输出
5
nil
4
abc
逻辑运算符not的运算结果永远为Boolean类型的值。
可以延伸如下:
//两者等价
x=x or v <==> if not x then x=v end
//a看做条件(显然and优先级大于or,**此时b不为false**)
a and b or c <==> a?b:c