Lua笔记(1)
今天开始学习Lua,下面把一些重点记下来:
单行注释-- ,多行注释 --[[ ....... --]]
Lua中false和nil表示条件判断的假,其余的,包括空字符串,0,都表示真。
Lua没有整数,都是浮点数
字符串
Lua字符串不能直接修改,字符串可以用单引号或者双引号引住,反斜杠转义
字符串转数字 print(“10” + 1 ) 输出11,而不是输出101(不是数字转字符串)
字符串连接用.. 符号。 print(10 . 20) 输出1020,数字先转成字符串,再连接
尽量不要依赖这些隐式转换,因为有时候会很奇怪,例如 10 == “10” 会返回false。用tonumber, tostring函数
#“字符串” 表示字符串的长度
表
表与c++的map类似,是一种广义数组
a = {} 创建一个表
a["abc"] = 10 添加元素
注意变量a仅仅是存放了对这个table对象的引用,所以b = a 是引用赋值,而不是把整个表复制
a["abc"] = 10 等价于 a.abc = 10 但不等于 a[abc]
a[10] 与 a["10"] 是不一样的! 谨慎起见可以用a[tonumber("10")]
访问不存在的索引(访问 a[12345] 但之前未对 a[12345] 赋值)统一返回nil,不会报错。由此得出删除一条记录的方法就是给它赋值nil。
days = {"Monday", "Tuesday"} 会把days[1] 初始化为“Monday”, days[2] 初始化为"Tuesday"。从中可以看出Lua数组索引一般从1开始。
表可以嵌套。例如: polyline = {color = "blue", {x=0,y=0},{x=-10,y=0}}。 于是polyline[1] 就是{x=0,y=0}这个表。
a = {[1] = "1", [2] = "3"}这样初始化之后,a[1] 的值为"1", 由此可见数字索引初始化的方法。
a = {x = "abc"} 等价于 a = {["x"] = "abc"}
days = {"Monday", "Tuesday"} 会把days[1] 初始化为“Monday”, days[2] 初始化为"Tuesday"。从中可以看出Lua数组索引一般从1开始。
表可以嵌套。例如: polyline = {color = "blue", {x=0,y=0},{x=-10,y=0}}。 于是polyline[1] 就是{x=0,y=0}这个表。
大括号内部的逗号可以用分号代替。
运算
5%3 = 2 5.5 % 1 = 0.5
^是乘方,不是异或
~=才是不等于
比较操作可以用于任意类型,字符串比较(包括大于小于)是按照字母顺序的,例如 "2" < "15" 返回false
and or为运算法,and如果第一个操作数为假,返回之,否则返回第二个,or如果第一个为真,返回之,否则返回第二个。注意不是返回布尔型。
赋值
多重赋值 a,b = "va",10,a、b分别得到对应的值。Lua先对右边求值,再赋值。于是a,b = b,a可以用来交换a、b
控制结构
if.....elseif .....else ....end 注意不是else if
while ... do .....end 注意有do
repeat ... until ...
for i = 1,10,2 do ....end 从1开始,每步自增2,直到大于10(注意不是大于等于)。不要在循环过程中改i。
for i,v in ipairs(a) do print (i,v) end 只打印从1开始连续整数索引的元素,i是下标,v是value。同样不要在循环过程中修改变量的值。若是改为pairs,则可以遍历所有元素。
函数
“成员函数”的调用方式: o.foo(o,x) 可写成 o:foo(x)
function add(a) ..... return ... end 函数定义语法
多个返回值,直接return a,b
变长参数 function show(...) for i,v in ipairs{...} do .... end return end 注意在函数内部也是通过...访问变长参数。例如 a,b = ...。可以把...当做一个表达式看待。
具有变长参数的函数可以拥有任意数量的固定参数,但是要放在变长参数之前。
特别重要的一点是,所有局部变量都要声明为local,否则自动变成全局。
Lua笔记(1)的更多相关文章
- Lua笔记
闭包 示例一 function newCounter() return function() -- anonymous function i = i + return i end end c1 = n ...
- Lua笔记(2)
函数高级特性 像新版c++一样,lua支持lambda表达式.也就是可以在函数内部声明函数.内层的函数可以访问外一层函数的局部变量. 一个函数以及它会访问到的外层函数的变量,称为闭包.这些变量又被称为 ...
- LUA笔记之表
表据说是LUA的核, 呵呵, 看例子吧, 看上去, 跟java的list很像, 又有点像json: a = {} -- create a table and store its reference i ...
- LUA笔记之字符串
LUA提供了自动数值转换, 基本上说是乱来也不为过, 就当做是不熟悉数据结构吧, 例子: print("10" + 1) --> 11 print("10 + 1& ...
- Lua 笔记
lua命令: #enter shell lua #excute script file lua xxx.lua lua脚本: #!/usr/local/bin/lua 核心概念: As a exten ...
- lua笔记二 赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法. a = "hello" .. "world" t.n = t.n + 1 Lua可以对多个变量同时赋值,变量列 ...
- lua笔记之userdata
1.一直使用框架里封装好的c库,想着自己一点一点的写些例子,学习下,以后需要c库,可以自己写了. 下边是一个简单的userdata的例子--数组操作. newarray.c #include &quo ...
- 设计模式实例(Lua)笔记之四(Builder 模式)
1.描写叙述: 又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我"牛叉公司非常惬意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我我们公司制作了,只是这次又 ...
- 设计模式实例(Lua)笔记之五(Bridge模式)
1.描写叙述 今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都非常赚钱,天天帮我在累加財富,事实上是什么公司我倒是不关心,我关心的是是不是 ...
随机推荐
- ASP.NET MVC 微信公共平台开发之验证消息的真实性
ASP.NET MVC 微信公共平台开发 验证消息的真实性 在MVC Controller所在项目中添加过滤器,在过滤器中重写 public override void OnActionExecuti ...
- SharePoint 2013 单一页面赋设计权限
本文介绍SharePoint的使用中,断开单一页面权限,给用户编辑权限以及操作中遇到的问题,希望给相关需要的人一个参考. 1.首先进入页面库,找到我们的页面,进入共享,如下图: 2.在弹出的窗口中选择 ...
- SharePoint 服务器端对象模型操作用户组(创建/添加/删除)
摘要:几个操作SharePoint用户组的方法,已经测试通过,但是没有提升权限,如果没有权限的人操作,需要提升权限(提权代码附后).大家需要的话,可以参考下,写在这里也给自己留个备份~~ //创建用户 ...
- Engine中执行gp工具返回的要素图层如何获取?
来自:http://zhihu.esrichina.com.cn/?/question/12087 Engine中执行gp工具返回的[解决办法]:需要用gpUtils.DecodeFeatureLay ...
- [Android]编译错误:Could not get unknown property 'release' for SigningConfig container
使用Gradle进行安卓编译时,出现如下错误: Could not get unknown property 'release' for SigningConfig container. 原因: 在主 ...
- IOS 网络浅析 (二 网络异步请求)
学习网络,无论是C/S还是B/S首要的当然是向服务器发送请求,并得到响应,么有请求没有响应,那就不叫做网络了. 这边文章向大家介绍境界一下网路异步请求. *大家不要觉得我写的知识点太零散,我只是想给大 ...
- 【原】iOSCoreAnimation动画系列教程(二):CAKeyFrameAnimation【包会】
在上一篇专题文章[原]iOSCoreAnimation动画系列教程(一):CABasicAnimation[包会]中我们学习了iOS核心动画CoreAnimation中CABasicAnimation ...
- IOS开发中(null)与<null>的处理
不小心在开发过程中,得到了(null)以及<null>的返回值,找了好长时间只找到了一个关于<null>的. 由于要根据返回值进行判断,做出必要反应,因此必须知道返回值所代表的 ...
- android学习笔记 activity生命周期&任务栈&activity启动模式
activity生命周期 完整生命周期 oncreate->onstart->onresume->onpause->onstop->ondestory 使用场景:应用程序 ...
- 启动app时全屏显示Default.png
一直很喜欢MJ的讲课视频,今天看了他的博客学到了些东西顺便记录下来. 在默认情况下,app显示Default.png时并非真正的"全屏显示",因为顶部的状态栏并没有被隐藏,比如下面 ...