首先说说Lua的语法规范。
1.下划线+大写字母组合通常被用于特殊用途。
2.Lua对大小写是敏感的,And和AND是不同的标识符。
3.单行注释: -- 注释内容
多行注释: –[[
注释内容
--]]
4.各种保留关键字
1.第一个程序
print("hello world!")
2.概括
Lua是一种动态类型的语言,类似python. Lua有8种基本类型。
nil(空),布尔,number(数值),string(字符),userdata(用户数据),function(函数),thread(线程),table(表),用type函数可以获得对应的类型名称。
print(type(nil)) print(type(true)) print(type(10.4*3)) print(type("hello")) print(type(io.stdin)) print(type(print)) print(type(type)) print(type({})) print(type(type(X)))
结果:
nil boolean number string userdata function table table string
3. 布尔类型
lua语言中,条件语句将除了bool值false和nil外的所有其他值视为真。特别的是。零和空字符串也是真。
lua支持常见的逻辑符and,or,not.对于and逻辑符,如果它的第一个操作数为假,则返回第一个操作数,否则返回第二个。
print(4 and 5) print(nil and 13) print(false and 13) print(13 and false)
结果:
5 nil false false
而or逻辑符。如果它的第一个操作数为真,则返回第一个,否则返回第二个。
print(0 or 5) print(false or "hi") print(nil or false)
结果:
print(0 or 5) print(false or "hi") print(nil or false)
而not永远返回bool类型的值。
4.数值常量
从Lua5.3开始,数值格式有64位整型(int)和双精度浮点类型(float)。出于节省内存,我们也可以编译位精简Lua模式,该模式使用32位整型和单精度浮点类型。
print(type(3)) print(type(3.5)) print(type(0x0.2))
结果:
number number number
两种类型之间是可以相互运算的,如果需要严格区分,需要使用math.type()。
常见的算术运算:
print(13+15) print(13.0+15) print(3.0/2) print(-(3*6.0))
结果:
28 28.0 1.5 -18.0
lua5.3之后,还有整除法,取模和指数运算:
print(3//2) print(3.0//2) print(17%3) print(19%3.0) --特殊地 x-x%0.001是x保留三位小数的结果 x = math.pi print(x-x%0.001) print(x^3)
结果:
1 1.0 2 1.0 3.141 31.0062766803
关系运算(< > <= >= == ~=(不等于)),特别地==和~=可以应用于任意两个值,当这个两个值的类型不用时,Lua语言认为它们是不相等的。注意应该忽略子类型。
print(3~=3.0) print(3=="hello")
结果:
false false
标准数学库math,由三角函数指数函数取整函数最大最小函数,伪随机数以及常量pi和hugh(最大可表示数值)组成。所有三角函数都以弧度为单位。通过deg和rad函数进行角度弧度转换。
随机数math.random。当不带参数时,返回一个[1, n]范围内的伪随机整数。1和n可以分别用两个整型参数替代。
math.random(l, n)
函数randomseed用于设置伪随机发生器的种子,通常使用math.randomseed(os.time())当前系统时间作为种子初始化随机数发生器。
取整函数floor,ceil和modf。
print(math.floor(3.3)) print(math.floor(-3.3)) print(math.ceil(3.3)) print(math.ceil(-3.3)) print(math.modf(3.3)) print(math.modf(-3.3))
结果:
3 -4 4 -3 3 0.3 -3 -0.3
关于运算符的优先级基本上和其他语言大致相同,就不赘述了。