lua-10分钟把基本的东西过一遍

如果你之前没有学过或者用过lua语言,请搜索“菜鸟教程”学习,或者点击

如果你之前已经用过lua,只是很久没用了,那么可以参考一下本博文,简单回顾一下。(博文以简单为主,不会有多余的解释)

基本:

 编写程序

 交互式编程:在shell或cmd中输入lua或lua -i 即可。(在命令行中输入程序并立即查看效果)

 脚本式编程:程序写在a.lua文件中,通过lua a.lua执行或者修改权限通过./a.lua执行(a.lua第一句#!/usr/bin/lua5.1)

 注释

  -- :单行注释

  --[=[多行注释--]=] (推荐)或者 --[[多行注释]]--

标识符

 字母下划线开头

变量

  默认都是全局变量, 不需要声明,直接赋值使用(赋什么类型的值,变量就是什么类型的)

  删除用赋值操作a=nil(nil表示无效值)

关键词

and break do else
elseif end false for
function if in local
nil not or repeat
return then true until
while

数据类型:nil、boolean、number、string、userdata、function、thread和table

 nil是无效值; 所有数字都是number(默认是双精度浮点型),比如2, 2.0, 3.1415e-3; string可以用‘ab’或“ab”

变量:三种类型,全局,局部,表中的域。变量不需要声明,a=10全局,local a=10局部(作用域到end)

 赋值

单变量赋值:a = "hello" .. "world"t.n = t.n + 1 

多变类赋值:a,b = 1,2*x 赋值过程是先对右边求值,然后按顺序赋左边。多去少补nil。

  交换操作: a,b = b,a

  函数返回赋值: a,b = fun() --假如fun函数返回两个值,依次付给a和b。

循环:for,while,repeat...until;break;

 while:

 for

  数值for循环:for a = 1,6,2 do print(a) end --输出结果是1,3,5;1,6,2分别是起点终点和步长(可以为负数);

   数值for循环只适用于number类型,如果参数是函数,那么函数只会执行一次,得到的结果用于循环。

  泛型for循环:泛型for循环通过一个迭代器函数来遍历所有值,类似java中的foreach语句。具体参考迭代,数组和table

 repeat...until:相当于do... while:repeat a=a+1 until(a>10)

break:跳出当前循环

流程:if,if else;

 if语句: if(1) then 1 end

if else语句: if(1) then 1 elseif(2) then 2 else 3 end

 判断条件:只有nil和false被认为是假,其他都为真。(在lua里面,0也是真)

函数

 函数定义: local function max(num1 , num2) fun_body return r1,r2... end

可变参数: 定义:function max(...) fun_body end --...(三个点)代表可变的参数,可以这样使用:

   local arg={...} --arg是一个表,用#arg表示传入参数的个数

 运算符:大部分和C语言一样,下面是需要注意的

 1.不等于:~=

2.逻辑与或非:and, or, not

3.连接两个字符串:..

4.获取字符串或表的长度:#(关于#要注意两点)

在获取表的长度时,根据的是表的最大索引的值 。即表tab索引是1,2,4,#tab得到的是4而不是3

最大索引从1开始找,一旦两个索引之间差了 2,那么就不再找了。即tab索引1,2,5,6 ,#tab也只得到2

字符串string:使用“ab”,‘ab’,或者[[ab]] ,需要的话了解一下转义字符

 字符串的相关转换很重要,函数,表达等很多,不好总结,去看一看吧。

数组:在lua中,没有数组类型,所谓的数组其实就是table(表)类型。

 索引:在 Lua 所有索引值是以 1 为起始,但你也可以指定 0 开始,甚至索引可以是负数。

迭代器

 泛型for迭代器:(for table)for key,value in pairs(table_name) do print(key,value) end

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

   表和数组 (其实也是table) 的迭代用了pairs和ipairs,请看它们的区别

table

Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil 

Lua table 是不固定大小的,你可以根据自己需要进行扩容

Lua table的索引非常奇怪,使用lua提供的操作方法时候要注意索引在table中的顺序(使用迭代器)

 --初始化表:mytable = {} --赋值表:mytable[1] = "lua" --删除表 mytable = nil

 --指定key的使用方法: mt = {name = "lgs", [2] = 2} print( mt[1], mt[2] ,mt.name) --输出结果:nil 2 lgs

 table操作方法:

 连接

  table.concat(ta, ", ", 2, 3) --连接ta表索引为2和3的valua,中间以”,“隔开。(这里索引只能是数字)

 插入和移除

  插入:table.insert(fruits,2,"grapes")

   在表fruits索引为2的地方插入"grapes"字符串(表的插入很奇怪,最好是索引从1开始且连续的)

 移除 :table.remove(fruits,2)

  移除索引为2的value,索引在2后面的,依次前移一位。如果没有提供移除索引,默认移除最后一个。

  排序:table.sort(fruits)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值