Lua入门教程 4.语句

0x04 语句


Lua支持的赋值语句与常规的C或Pascal语言中所支持的语句差不多,此外还还支持多重同仁和局部变量声明

赋值

  • ###普通赋值
a = "Hello World"
b = a .. "nooo"

Lua的普通赋值的意义就是用于改变变量的值

  • ###多重赋值
    Lua还支持多重赋值,即*一次性将多个值赋予多个变量*
a,b = "Hello", "World"` --> `a = "Hello"` `b = "World"

多重赋值的规则:

  • Lua先对等号右边的所有元素求值,然后才执行赋值,即可以用多重赋值来交互两个变量 x,y = y,x --交换x y
  • Lua总是会将等号右边值的个数调整到与左边变量的个数一致。若值的个数少于变量的个数,那么多余的变量会赋值为nil,若值的个数更多的话,那么多余的值会被“静悄悄地”去掉:a,b,c = 1, 1 -- a=1 b=nil c=nil a = 1,2 --2会被去掉

局部变量与块

  • 通过local来创建局部变量:
i = 10  -- 全局变量
local j = 20  --局部变量
  • 局部变量的作用域仅限于声明它所在的块,一个块是一个控制结构的执行体、或者是一个执行体再或者是一个程序块
 x = 10
   local i = 2   --程序块中的局部变量

   while i <=x do
       local x = i * 2  --循环中的局部变量
       print(x)
       i = i + 1
   end

可以使用do end来界定块

do
    local a = 2   --作用域在do块中
    local b = 3

    if a<b then
        print(b)
end

控制结构

Lua用来控制结构的关键字有 用于条件判定的if else 用于循环迭代的 while repeat for

  • if then else if语句先测试其条件,然后根据测试结果执行then或else部分
if a < 0 then print (a) end

if a < b then return a 
    else return b
end

Lua不支持switch语句,所以大量的if else是很常见的

  • while Luawhile语句是先执行对条件的检测。如果为假则不执行,如果为真则执行循环体。

    local i = 1
    while a[i] do 
        print(a[i])
        i = i + 1
    end
    
  • repeat 一条repeat-until语句重复执行其循环体直到条件为真时结束 一个声明在循环体中的局部变量的作用域包括了条件测试:

local sqr = x/2
repeat
    sqr = (sqr + x/sqr)/2
    local error = math.abs(sqr^2 - x)
until error < x/10000  --在此处依然可以访问error

for有两种形式:数字型for和泛型for

  • 下面是数字型for
for var = exp1, exp2, exp3 do
    <do something>
end

此种forexp1为初始值 ,为exp2为终点值 ,每次变化都以exp3为步长递增var

 ****如果不想给循环设置上限的话,可以使用常量math.huge****
    for i=1, math.huge do
        if(0.3*i^3 -200 >=0) then
            print(i)
            break
        end
    end
  • 接下来是*泛型*for

    泛型for通过一个迭代器函数来进行遍历

for i,v in ipairs(a) do print(v) end
    --[[Lua的基础库提供了ipairs,是一个用于遍历数组的迭代器函数。在每次循环中,i会被赋予一个索引值,同时v被赋予一个对应于索引值的数组元素值]]--

-break return用于跳出当前的块

local i =1
while a[i] do
    if a[i] == v then break end
    i = i + 1
end

关于ipairspairs

  • 1.ipairs
    ipair主要是一个用于遍历数组的迭代器函数。在每次循环中,i会被赋予一个索引值,同时v被赋予一个对应于该索引的数组元素值。下面是演示遍历一个数组中的所有值:
for i,k in ipairs(a) do print(v) end
  • 2.pairs
    pairs是一个用于遍历table的迭代器函数。下面演示如何打印所有的key值:
for k in pairs(t) do print(k) end

猜你喜欢

转载自blog.csdn.net/yao_jianlun/article/details/51581428