Lua学习中的心得体会

1.逻辑运算符-短路规则
–需要进行“短路规则”判断的例子
–print(10 and 20) --output: 20
–print(nil and 80) --outpu: nil
–print(false and 66) --output: false
–print(2 or 5) --output: 2
–print(false or 10) --output: 10
–print(“你好” and 10) --output: 10
–print(20 or “hello”) --output: 20
2.关键字pairs与ipair的区别
pairs会遍历table的所有键值对,table就是键值对的数据结构。而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integer key值从1开始遍历的。
请看个例子:
tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}

for k,v in ipairs(tb) do
     print(k, v)
end

输出结果就是:
1 oh
2 my
3 god
因为tb不存在tb[4],所以遍历到此为止了。

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

输出结果:
1 oh
2 my
3 god
6 world
5 hello
我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。
如果我们要按顺序输出怎么办?

for i = 1, #tb do
   if tb[i] then
     print(tb[i])
   else
end

当然,仅仅是个数组的话,ipairs也没问题。

3.表长度的输出
对表进行遍历输出时,没有键值对的表可以直接通过#或者table.getn获取表的长度,有键值对的表需要通过迭代器函数pairs或者ipairs来获取表的长度.
4.表最大值的问题
表tab={10,11,55,33,100}采用table.maxn函数求最大值时,返回的值是5,此官方函数有BUG,实际输出的是表的长度,而不是表的内容中的最大值.
5.可变参数
对可变参数进行遍历时,用ipairs碰到nil时会停止遍历,用pairs碰到nil时会跳过继续遍历,如果想遍历到nil则需要用select关键字,select(’#’,…)可以获取可变参数的长度,需要注意的是select关键字同arg冲突,同时select(i,…)的含义是从位置1开始遍历所有的可变参数,所以如果是打印输出所有的可变参数,可以不用使用for循环,如果需要对其中的值进行逐个操作,则需要
local num
for i=1,select('#',...) do
   num=select(i,...)
   print(num)
end
6.随机数
在使用随机函数math.random(1,10)时会发现数值并不随机,主要原因在于lua中随机函数的使用需要配合math.randomseed(os.time()),其中os.time()可以得到系统的时间,因其格式是转换后一个时刻变化的整数值,所以作为可变因子传入十分合适,只有当可变因子数值发生大的变化时,才能影响到随机函数的数值.同时如果想让随机因子变化的幅度比较大,可以通过string.reverse(tostirng(os.time())来对数值进行翻转.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值