数字
数字类型表示实数(双精度浮点)数字。Lua 没有整数类型,因为它不需要它。对浮点算术误差存在普遍的误解,有些人担心,即使是简单的增量,浮点数字也可能会变得怪异。事实是,当您使用双精度值表示整数时,没有任何舍入错误(除非数字大于 100,000,000,000,000,000)。具体地说,Lua 数字可以表示任何长整数,而不会出现舍入问题。此外,大多数现代 CPU 的浮点算术速度与整数算术一样快(甚至更快)
数字只有一种类型,就是默认双精度!
print(type(2)) --number
print(type(2.2)) --number
print(type(0.2)) --number
print(type(2e+1)) --number
print(type(0.2e-1)) --number
print(type(7.8263692594256e-06)) ----number
字符串
字符串具有通常的含义:一系列字符。Lua 是八位干净,因此字符串可能包含具有任何数值的字符,包括嵌入的零。这意味着您可以将任何二进制数据存储到字符串中。Lua 中的字符串是不可变值。不能像在 C 中那样更改字符串中的字符;因此,在 C 中可以更改字符串中的字符。相反,使用所需的修改创建新字符串
单引号,双引号,[[]] 都可以把字符串装起来
s1="apple"
s2=' hello'
s3=[[ I am happy]]
print(s1..s2..s3) --apple hello I am happy
函数
函数是Lua中的一等公民。 这意味着函数可以存储在变量中,作为参数传递给其他函数,并作为结果返回。 这样的功能为语言提供了极大的灵活性:当运行一段不受信任的代码(例如通过网络接收的代码)时,程序可以重新定义功能以添加新功能,或者简单地擦除功能以创建安全的环境。 而且,Lua为函数式编程提供了良好的支持,包括具有适当词法作用域的嵌套函数.
Lua可以调用用Lua编写的函数和用C编写的函数。Lua中的所有标准库都是用C编写的。它包括用于字符串操作,表操作,I / O,访问基本操作系统功能,数学函数和调试的函数。
function factorial(n)
if n==0 then
return 1
else
return n*factorial(n-1)
end
end
print(factorial(6)) --720
x=factorial(6)
print(x) --720
table
在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据
需要注意的是下标从1开始
local tb1={} --定义一个空的table
local tb2={"apple","pear","orange","grape"} --定义一个含有值得table
for k, v in ipairs(tb2) do --table有一个类似索引的东西
print(k.." "..v)
end
结果
1 apple
2 pear
3 orange
4 grape
a3={} --创建空table
for i = 1, 10 do
a3[i]=i
end
--不能直接打印table
print(a3) --table: 00000000000994b0
print(a3[2]) --2 利用索引获取table元素
print(#a3) --10 table长度
a3["test"]=99
print(a3["test"]) --99
print(a3[test]) --nil
table其实也可以充当其他语言中map的作用
t={key1="value1",key2=value2}
print(t.key1) --这种写法方便点
print(t["key1"]) --这种写法需要加双引号
t.key3="value3"
print(t.key3) --value3
print(#t)
奇怪的#
键值对形式的不算长度
t1={"apple","bana"}
print(#t1) --2
t2={key1="apple",key2="bana"}
print(#t2) --0
t3={key1="apple",key2="bana","luobo"}
print(#t3) --1
布尔类型
true
false
总结
- 除了table比较奇怪,其他还是可以接受的