学会了Lua的环境配置之后,并且成功的打印了一个hello world,下面可以真正踏入lua的大门啦!
下面的例子都是用上次编译好的LuaTest.exe来运行的,记录的一般是与C/C++语法不同的地方。
--全局变量 a = 10; print(a) --将nil赋值给一个全局变量,这个变量就被删除了 a = nil print(a)结果:
10
nil
请按任意键继续. . .
Lua中直接使用一个变量的话,这个变量就是全局变量。如果不使用一个变量了,就将它赋值为nil即可。
print(type(nil)) print(type(1)) print(type("hello world")) print(type(print))结果:
print(1 and 2) --第一个为真,返回2 print(nil and 2)--第一个为nil,假,返回nil print(false and 2)--第一个为false,假,返回false print(1 or 2) --第一个为真,返回1 print(nil or 2) --第一个为假,返回2 print(false or 2) --第一个为假,返回2 print(not nil) print(not false) print(not 1)结果:
--容易出错的地方,这样赋值的话,只有第一个变量赋值成功,第二个会为nil a,b = 0 print(a, b) --lua支持多重赋值 a,b = 1,2 print(a, b) --多重赋值会先计算右边元素,所以可以利用这个特性来交换两个变量 a,b = b,a print(a, b) --右边有多余的话,会被忽略、 a,b = 1,2,3 print(a, b) --左边有多余的话,会置为nil a,b,c = 1,2 print(a, b, c)结果:
--全局的变量a, b a, b = 1, 10 if a < b then print(a) --局部变量a会屏蔽全局变量 local a = 2 print(a) end print(a, b)结果:
--全局的变量a, b a, b = 1, 10 if a < b then print(a) --使用全局变量初始化局部变量 local a = a print(a) end print(a, b)结果:
--从输入读取一行数据 line = io.read() --将字符串转化为数字,如果转化成功变成数字,否则返回nil n = tonumber(line) --条件判断 if n == nil then print("input is not valid number") elseif n < 5 then print("num < 5") elseif n == 5 then print("num = 5") else print("num > 5") end结果:
a = 1 while a < 10 do print(a) a = a + 1--lua木有++操作,所以得写原始写法 end结果:
--打印输入第一行不为空的内容 repeat line = io.read() until line ~= "" print(line)结果:
--for语句有三个控制变量,最后一个为步长 for i = 10, 1, -1 do print("hehe") end结果:
void func() { <span style="white-space:pre"> </span>return; <span style="white-space:pre"> </span>cout<<"hehe"<<endl; }但是,在lua中,由于return只能放在语句块的最后一句话,换句话说就是end,until,else前的一句。而在其他位置就属于语法错误,不会按照我们想象中的返回。
function func() --我们想让函数直接返回,但是做不到啊... return print("hehe") end func()结果:
function func() --自己构造一个语句块 do return end --这下下面的就执行不了了 print("hehe") end func()结果: