1.基础概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/qq_25327609/article/details/85699407