if n == 0 then
return 1
else
return (n * fact(n-1))
end
end
print("enter a number:")
a = io.read("*number")
print(fact(a))
在终端中不要进入lua命令模式,直接敲lua D:\lua、hello.lua,即可运行
lua是大小写敏感的,命令行模式:-e 直接将命令传入lua
-l:加载一个文件 -i进入交互模式 _PROMPT(提示)内置变量作为交互模式的提示符
lua是动态类型语言,变量不需要类型定义。8个类型:nil, boolean,number,string,userdata,function,thread和table
local a = 0.2e4
print(a) --2000 如果是0.2e5等于20000
string是字节的序列,lua是8位的字节,字符串可以包含任意字符,包嵌入的0,可以存储任意的二进制到string中,字符串不可修改,可以创建一个变量存储这个字符串,自动进行内存分配和释放,一个字符串可以包含一个祖母和一本书。
..是是字符串连接符,当在一个数字后面写..时,必须协商空格以防止被解释出错。
tonumber() :convert(转化成)number
函数是第一类值,可以存在变量中,可以作为函数的参数和返回值,为了运行不可靠的代码创建安全运行环境而隐藏函数,lua的所有标准库都是有c语言编写的,包括string库,table库,i/o库,os库,算术库,debug库
^是幂,~=是不等于,这些操作都是返回结果都是true和false,如果值相等但是类型不同就不相等。
“0” == 0 --false
“2” < "15" --false 因为按照字母表的顺序
and和or的结果都不是true和false,他和两个操作数有关
a and b --如果a为false,则返回a,否则返回b
a or b --如果a为true,则返回a,否则返回b
x = x or v --如果x为false或者nil则给x
构造表:构造函数可以用任何表达式初始化
a = { x = 0, y = 0 } --a = {}; a.x = 0; a.y = 0
!!!
local a = {m = 2,y = 3,n = 4}
a[1] = "wu"
print(a[1])
除了^和..以外所有的二元运算符都是坐连接的