Lua学习笔记(一)

1. 用for循环遍历数组

正常的for循环如下:

array = {"Lua", "Tutorial"}
for i= 0, 2 do
   print(array[i])
end

for var=exp1,exp2,exp3 do
<执行体>
end
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。

也可以用如下形式(泛型for循环):

for i,v in ipairs(tab3) 

do 
    print(i,v) 
end

在lua中pairsipairs两个迭代器的用法相近,但有一点是不一样的:

pairs 可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;

ipairs 不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key

2. 通过 select("#",…) 来获取可变参数的数量:

select(’#’, …) 返回可变参数的长度
select(n, …) 用于返回 n 到 select(’#’,…) 的参数, 返回多个参数, 如果只用一个变量接收只能获取返回的第一个参数,如:

arg = select(2, 1, 6, 8, 8, 9)
print(arg)  --> 输出为:6
print(select(2, 1, 6, 8, 8, 9))  --> 输出为:6    8    8    9

还可以将可变参数赋值给一个变量, 然后用"#"操作符去可变参数长度。

function average(...)
   result = 0
   local arg={...}    --不能写成 local arg=...
   for i,v in ipairs(arg) do
      result = result + v
   end
   print("总共传入 " .. #arg .. " 个数")
   return result/#arg
end

print("平均值为",average(10,5,3,4,5,6))
3. 取长度操作符

一元运算符,返回字符串或表的长度。

如果取数组的长度,它满足 t[n] 不是 nil 而 t[n+1] 为 nil; 此外,如果 t[1] 为 nil ,n 就可能是零。

the length of a table t is only defined if the table is a sequence, that is, the set of its positive numeric keys is equal to {1…n} for some integer n

对于常规的数组,里面从 1 到 n 放着一些非空的值的时候, 它的长度就精确的为 n,即最后一个值的下标。 如果数组有大于等于一个nil值, 那么 #t 可能是指向任何一个是 nil 值的前一个位置的下标 (就是说,任何一个nil 值都有可能被当成数组的结束)。 lua table 长度解析,二分法查找

如果向统计非nil值的数组长度,可以自定义函数

function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end
4. 字符串匹配

替换前后空格,

function trim(s)
  return (string.gsub(s, "^%s*(.-)%s*$", "%1")) 
end
string1 = "   RUNOOB        "
string2 = trim(string1)
print(string2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值