您的位置:首页 > 编程语言 > Lua

lua学习笔记(二)

2018-07-23 06:19 106 查看

1.局部变量与块

--控制结构或函数或者程序块的执行体成为块  交互模式下一行算一个块所以如下:
--可以显示的用do end 来划定块 局部变量只在当前的块中有用
local a,b=1,10
if a<b then
  print(a)
  local a  --会匹配一个最近的有效果的局部变量
  print(a)
  end
  print(a,b)

n=10
if n<=10 then
local n = n  --可以利用这种特点将全局变量的值赋给局部变量,进而保存全局变量
n = n-1
print(n)
end
print(n)

 


2.控制结构

 

--控制结构 循环和分支
 --1.if then       (elseif then)     (else)        end
 a=10
 a=9
 a=8
 if a==10 then
 print(a)
 elseif a==9 then
 print(2*a)
 else
print("a:"..a)
 end

if a<=10 then
print("哈哈哈哈哈哈哈")
end

--2. while循环

i=5
while i<=10 do
print(i)
i=i+1
 end

--3.类似于C中do while 循环的 repeat until
t=2;
repeat
t=io.read("*number")
until t==6
print(t)


--3.数字型for循环  实例中的i默认为局部变量并且 i=1,9,2只会在一开始时初始化一次
--表示i从1开始每次递增2     i<=9翁跫
for i=1,9,2 do
print(i)
end

--泛型for循环主要是针对表和文件操作的 需要用到迭代器函数
b={1,2,3,4,5,6}
for k,v in pairs(b) do
print(k,v)
end

--break 与 return必须是一个块最后一条语句 即是一个程序块最后一个语句或者是end else 或 until 的前一条语句
local i = 1
for i=1,#b do
if(i==5) then   --ok
print(i)
 break;
 end
end

--[[local i = 1
for i=1,#b do  --错误的
if(i==5) then
 break;
 print(i)
 end
end]]

 

3.赋值

--多重赋值
a,b=1,2;
print(a.." "..b)
a,b=1,2,3;
print(a.." "..b)
--a,b=1;
print(a.." "..b)
--利用多重赋值交换
a=3
b=4
a,b=b,a
print(a.." "..b)


4.函数的多重返回值

--函数形参可以与传的实参个数不同,此时,若形参多,则多余的形参被赋值为nil,若实参多,则多余的实参被舍弃掉
--比较奇葩的地方:当形参只有一个并且是字符串或table类型的变量时 调用时可以不加括号
function printstring(n)
print(n)
end
printstring "123"

function printfive(a,b,c,d,e)
print(a,b,c,d,e)
end

printfive(1,2,3)

printfive(1,2,3,4,5,6)

 --多重返回值 不管是赋值,函数中调用函数,把返回值给一个表 还是位于return语句中 都只能在它位于最后时才起作用

 --赋值的情况
 --1.能够返回多个值  位于赋值的最后面的一个
 function f()
 return 1,2,3
 end
 a,b,c = f()
  print(a,b,c)
 a,b,c,d = 9,f()
 print(a,b,c,d)
 --2.不能返回多个值 不是位于赋值的最后面一个不会返回多个值
 a,b,c = f(),4
 print(a,b,c)

 --函数调用函数的情况,同理  还是拿f为例

 print(f())

 print(4,5,6,f())

 print(f(),4,5,6)

 --把返回值传给一个表
 function f0()
 return 0,2,4
 end

 function f1()
 return 1,3,5
 end

 h={f0()}

 for k,v in pairs(h) do
 print(k,v)
 end

  h={f0(),f1()}

 for k,v in pairs(h) do
 print(k,v)
 end

--return中调用返回多个值的函数,同理
function f2()
return f1(),8
end
print(f2())

function f3()
return 8,f1()
end

print(f3())

--若返回多值的表达式加了括号,尽管它是最后一个,但它仅返回一个值
print((f3()))

--unpack 它接受一个数组作为参数,并且从1开始返回该数组的所有元素
a={1,2,3,4,5,6,7,8,9,10}
c,d = unpack(a)  --注意,这样赋值,c和d都是number类型
print(c,d)
print(unpack(a))
print((unpack(a)))

 

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: