Lua基础教程之语句

赋值

  基础赋值

a = 10 
tab.name = "name"

  多重赋值

a,b = 10,"abc" 
a,b = b,a --交换两个变量 多重赋值时,注意左右格数不匹配的情况 
a,b,c = 0,1 print(a,b,c) 
输出 
0,1,nil 
a,b,c = 0 print(a,b,c) 
输出 
nil.nil,0

局部变量与块(block)

  使用local创建局部变量。

local i =1 --局部变量 
m = 20 --全局变量

  局部变量的作用域仅限于声明它们的那个块。一个块是一个控制结构的执行体、或者是一个函数的执行体再或者是一个程序块。

x = 10            --全局变量
local i =1
while i<= x do
    local x = i*2 --x为局部变量
    print(x)      --输出2、 4、 6 、8..
    i = i+1
end

if i > 20 then
    local x       --局部变量
    x = 20        
    print(x+2)    --输出22
else
    print(x)      --全局变量 输出10
end  

  一个局部变量通常会随着其作用域的结束而消失,GC便可释放其值。访问局部变量速度比全局变量速度快。

控制结构

  if then else 流程控制

local a = 20
if a < 10 then
    print("the number less than 10")
elseif a < 15 then
    print("the number between 10 and 15")
elseif a < 20 then
    print("the number between 15 and 20")
else
    print("the number more than 20")
end

  由于lua不支持switch语句,所以这一连串的if -elseif 代码是很常见的。

  while

  与其他语言中的while不同,lua先测试while条件。如果条件为false,那么循环接结束。

local i=1
while i < 20 do
    print("name"..i)
    i = i+1 -- lua中没有自增++ 自减--运算符
end

  repeat

  一条repeat -until语句重复执行知道条件为真结束

local i = 1
repeat
    i = i+1
    print("name"..i)
until i > 20

  for

  数字型for

for var = exp1,exp2,exp3 do
    <执行体>
end
var 从exp1变化到exp2,每次变化以exp3作为步长,并执行一次执行体
其中exp3是可选的,默认为1
for循环打印前十的偶数
for i = 2,10,2 do
    print(i)
end

  泛型for

  通过迭代器函数来遍历所有值

local tab = {"one","two","three"}
for i,v in ipairs(tab) do
    print(i,v)
end
输出
1   one
2   two
3   three

  注意:

  pairs遍历表中全部key,value

  ipairs从下标为1开始遍历,然后下标累加1,如果某个下标元素不存在就终止遍历。这就导致如 果下标不连续或者不是从1开始的表就会中断或者遍历不到元素。即ipairs必须按照索引递增遍历。

  break与return

  break和return语句用于跳出当前块。并且break和return只能是一个块的最后一条语句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章