Lua:变量、赋值、索引以及流程控制

变量

lua中的变量全部是全局变量,变量的默认值为nil

function joke()
 c=5 --全局变量
 local d=6--局部变量
end
joke()
print(c,d)--c是5,d是nil
------------------------
do
 local a=6;
 c=6;
 print(a,c)--6 6
end
print(a,c)--6,5

函数可以作为传入参数

function myprint(param)
 print("myprint输出的值",param)0
end

function add(num1,num2,someFunction)
 result=num1+num2
 someFunction(result)
end

add(10,1,myprint)

赋值

1,交换
x,y=y,x
a[i],a[j]=a[j],a[i] 
2,合并
变量+空格+..+空格+变量
3,返回值
a,b=f()--函数返回两个值,分别返回给a和b

索引

1,表的索引
t[i]
t.i--当索引为字符串类型时的一种简化写法
gettable_event(t,i)--采用索引访问本质上是一个类似这样的函数调用

循环

Lua中有while,for,repeat,until
在do和end中间写循环体代码
条件语句if,在then后面写执行代码,以end结束

--举例
tab={"java","C++","C","Lua"}
for key,value in ipairs(tab)
do 
 print(key,value)
end

首先,初始化,计算in后面的表达式的值(ipairs),表达式应该返回泛型for所需要的三个值:
1,迭代函数
2,状态常量
3,控制变量
如果表达式返回的结果个数不足三个,会自动调用nil补足。
第二、将状态常量和控制变量作为参数,调用迭代函数
第三、将迭代函数返回的值赋给变量列表
第四、如果返回的第一个值为nil,循环结束,否则继续执行循环体
第五、回到第二步,再次调用迭代函数

举例:手写一个符合for in要求的表达式:

function iparis1(tab)
  return ipairs1_iter,tab,0
end
--第一个是迭代函数,第二个是状态常量
function ipairs_iter(tab,i)
  i=i+1;
  if tab[i]~=nil then return i,t[i]
  end
end
--lua中不等于是~=而不是!=a

for k,v in ipairs1(tab) do
  print(k,v)
end

同样可以实现ipairs的功能。ipairs在迭代时,将返回三个参数,第一个是ipairs,第二个是传入的table,第三个是0。每次将table中的值赋值给k和v,在下一次循环中更新k和v的值,直到k和v为nil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值