今天开始学习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)的更多相关文章

  1. Lua笔记

    闭包 示例一 function newCounter() return function() -- anonymous function i = i + return i end end c1 = n ...

  2. Lua笔记(2)

    函数高级特性 像新版c++一样,lua支持lambda表达式.也就是可以在函数内部声明函数.内层的函数可以访问外一层函数的局部变量. 一个函数以及它会访问到的外层函数的变量,称为闭包.这些变量又被称为 ...

  3. LUA笔记之表

    表据说是LUA的核, 呵呵, 看例子吧, 看上去, 跟java的list很像, 又有点像json: a = {} -- create a table and store its reference i ...

  4. LUA笔记之字符串

    LUA提供了自动数值转换, 基本上说是乱来也不为过, 就当做是不熟悉数据结构吧, 例子: print("10" + 1) --> 11 print("10 + 1& ...

  5. Lua 笔记

    lua命令: #enter shell lua #excute script file lua xxx.lua lua脚本: #!/usr/local/bin/lua 核心概念: As a exten ...

  6. lua笔记二 赋值语句

    赋值是改变一个变量的值和改变表域的最基本的方法. a = "hello" .. "world" t.n = t.n + 1 Lua可以对多个变量同时赋值,变量列 ...

  7. lua笔记之userdata

    1.一直使用框架里封装好的c库,想着自己一点一点的写些例子,学习下,以后需要c库,可以自己写了. 下边是一个简单的userdata的例子--数组操作. newarray.c #include &quo ...

  8. 设计模式实例(Lua)笔记之四(Builder 模式)

    1.描写叙述:      又是一个周三,快要下班了,老大突然又拉住我,喜滋滋的告诉我"牛叉公司非常惬意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我我们公司制作了,只是这次又 ...

  9. 设计模式实例(Lua)笔记之五(Bridge模式)

    1.描写叙述 今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都非常赚钱,天天帮我在累加財富,事实上是什么公司我倒是不关心,我关心的是是不是 ...

随机推荐

  1. 显示所有SAP图标的ABAP代码

    TABLES: icon. INCLUDE <icon>. FIELD-SYMBOLS: <f>. SELECT * FROM icon. ASSIGN (icon-name) ...

  2. SharePoint 2013 创建搜索中心及搜索设置

    本文没有太多深奥的东西,只是简单的搜索配置,如果你已经掌握请略过本文. 好了,进入内容简介,众所周知,搜索是SharePoint一大特性,下面,我们简单介绍下搜索中心的创建. 1.创建Search子网 ...

  3. Engine中如何更改矢量图层字段别名?

    [解决办法]:使用IClassSchemaEdit.AlterFieldAliasName方法可以更改数据源的别名,如果想在图层的属性中更改显示的别名需要使用ITableFields.FieldInf ...

  4. IOS 网络浅析-(九 NSURLSession代理简介)

    从最开始什么都不懂的小白,到到现在略知一二的小孩.我觉得不仅仅是我,大家应该都会注意到代理几乎贯穿着IOS,那么问题来了,我接下来要说什么呢,那就是.标题的内容啦.上篇网络系列的文章我介绍了NSURL ...

  5. 【原】画流程图工具visio使用技巧汇总

    最近写论文需要画不少流程图,有两种选择,一是word, 二是visio.原先一直用word画,效果也还可以,但是每个部件画完后为了便于适应排版变动,需要将需要的模块按下ctrl逐个点击选中后进行组合. ...

  6. ios 删除系统从相册压缩的视频

    iOS的沙盒机制,应用只能访问自己应用目录下的文件.iOS不像android,没有SD卡概念,不能直接访问图像.视频等内容.iOS应用产生的内容,如图像.文件.缓存内容等都必须存储在自己的沙盒内.默认 ...

  7. 多线程基础(三)NSThread基础

    3.多线程基础 NSThread的基本使用   如何使用NSThread创建新线程 创建线程之后是默认不执行的状态 创建三个线程:   通过name属性区别这些线程 接下来就是通过设置线程的优先级来设 ...

  8. ReSharper 卸载后 VS2012 没有提示问题

    虽然ReSharper非常强大,但由于公司电脑配置太差,被迫卸载了.但发现卸载后,VS2012自带的提示都没有了. 网上找了下相关的解决方法.摘抄下来,作为自己笔记. 解决方法原文出处:http:// ...

  9. abs()函数的返回值问题

    转载原文地址:http://www.cnblogs.com/webary/p/4967868.html 在牛客网看到一道关于abs()函数返回值的题目,见下图,当时还没反应过来,第一反应是:自从我开始 ...

  10. 让div中的table居中

    div 标签上写  style="text-align:center" div中的table中写 style="margin:auto;"  <table ...