//附加:(1)if语句的格式:
if n == 0 then
return 1
else
return 0
end
(2)function函数格式
function fact(n)
end
(3)for语句的格式
for i = 1,1000 do
a[i] = i*2
end
泛型for循环:
a = {"FF", "AA", "BB", c = 1, b = 2, "LL"}
for k,v pairs(a) do
print(k, v)
end
//打印结果:
1 FF
2 AA
3 BB
4 LL
b 2
c 1
从输出结果上看是按照ascii码的先后顺序输出的
for k,v ipairs(a) do
print(k, v)
end
//打印结果:
1 FF
2 AA
3 BB
4 LL
从输出结果上看,只循环里面的数值队
//当数字跳跃,目前tabel里面的数值是到4
a[6] = "OO"
pairs依旧全部打印
1 FF
2 AA
3 BB
4 LL
6 OO
b 2
c 1
ipair在遇到nil值会停止循环,所以打印不变
1 FF
2 AA
3 BB
4 LL
//泛型for与数字型for相同点:1循环变量是循环体内的变量;2决不应该对循环变量作任何赋值
(4)while语句格式
while 条件 do
end
(5)nil只与自身相等
print(a == nil) --->true
//不同类型的比较都是false
(6)//io.write()与print()差不多,都是输出,但一些格式上有些不一样
//区别:
1.io.write()要不在参数中不加'\n','\t'它自己是不会空行空格的;但print()中以逗号隔开的参数输出时都会自动变为空格隔开,每一次输出完自动换行
2.io.write()参数不能是nil,否则它会报错;但print(nil)输出为nil
3.io.write()参数与参数之间可以使用".."字符串连接符,但是这个会消耗很多资源
4.io.write()是原样输出参数,没有调用tostring,因此io.write({})也会报错,但print()不会报错
//键盘输入输出:
//一般情况下io.write和io.read是一对,他们从stdin标准输入,stdout标准输出
io.write(data) 将data数据输出到标准输出上; io.read从标准输入中读数据
//文件输入输出:
//io.input(file) 修改默认输入文件为file文件中的数据,执行这个后就不再是从stdin读取数据
//io.output(file)将文件file设置成默认输出文件,执行这个后输出不显示在屏幕上stdout
例:
io.input("hello.lua") --设置hello.lua为默认输入文件
t = io.read("*all")
io.write(t,'\n') -----输出整个 hello.lua文件的内容到stdin显示屏上
io.output("hello.lua") --设置hello.lua为默认输出文件
io.write("bbbbbbb",'\n') --bbbbbbb输出到hello.lua这个文件上
io.close() --关闭输出文件,这时候如果后面再执行io.write()会报错
io.output(io.stdout) --设置标准输出
io.write("bbbbbbb",'\n') --这时输出bbbbbbb会显示在屏幕上
//附加小知识点:
"*all" ---读取整个文件
"*line" ---读取下一行
"*number" ---从字符串转换出一个数值
num ---读取num个字符
//如果io.read()没有参数,默认读取一行
line = io.read() //读取一行
io.write()
io.open("hello.lua","r")//以只读形式打开hello.lua文件,打开失败返回nil和错误消息