概述
如果你之前没有学过或者用过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)
最后
以上就是害怕外套为你收集整理的lua-10分钟把基本的东西过一遍的全部内容,希望文章能够帮你解决lua-10分钟把基本的东西过一遍所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复