lua学习
在lua中,一切都是变量,除了关键字。
1、注释:
单行注释: 连续两个减号“--”表示注释的开始,一直延续到行末。相当于C语言中的“//”
多行注释:由“--[[”表示注释开始, “]]”表示注释结束。类似于C语言中的“/*..........*/”
2、编程
在lua中,语句之间可以用分号“;”, 也可以用空白隔开。 如果多个语句在同一行中时,建议使用分号隔开。
lua有好几种程序控制语句:
条件控制:
if 条件
then … elseif 条件
then … else … end
while循环
while 条件
do .... end
repeat循环
repeat .... until 条件
For循环:
for 变量 = 初值,终点值,步进 do … end
For循环:
for 变量1,变量2,… ,变量N in表或枚举函数 do … end
注意一下,for的循环变量总是只作用于for的局部变量,你也可以省略步进值,这时候,for循环会使用1作为步进值。
语句块:
使用 do和end进行。相当于C语言中的"{ }".
赋值语句:
在lua中被强化了,可以同时给多个变量赋值。
a,b,c,d=1,2,3,4
默认情况下,变量总是全局的。要使用局部变量,在第一次赋值的时候,需要用"local"说明。
local a,b,c=1,2,3 全是局部变量
数值运算:
支持+、—、*、/运算,还支持"^",表示指数乘方运算,例如2^3=8
连接两个字符串,可以使用“..”运算符。
关键字:
and break do else elseif end false for function if in local nil not or
repeat return then true until while
变量类型:
怎样确定一个变量类型呢?可以使用type()函数来检查。
lua支持的类型有以下几个:
Nil:空值,所有没有使用过的变量都是Nil。Nil既是值,又是类型。
Boolean:布尔值。
Number: 数值,在lua里,数值相当于C语言的double
String:字符串,字符串可以包含'\0'字符的。
Table:关系表类型
Function:函数类型。
Userdata:这个类型专门用来和lua的宿主打交道。宿主通常是用C和C++来编写的。在这种情况下,Userdata可以是宿主的任意数据类型。常用的有struct和指针。
Thread:线程类型,在lua中么有真正的线程。lua中可以将一个函数分成几部分运行。
逻辑运算符
逻辑运算符认为false和nil是假(false),其他为真,0也是true
and和or的运算结果不是true和false,而是和它的两个操作数相关
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
Metatables and Metamethods
元表与元方法,这是一个很重要的概念。可以为table设置或指定metatable,用于指定某些运算符对应的操作方法。
* setmetatable(table, meta_table) 设置元表
* getmetatable(table) 获取元表
这个元素,可以是个函数。
tb = {
----> <metatable> = {
__add = function : xxx 加法操作
__sub = function : xxx 减法操作
__mul = function : xxx 乘法操作
...
} [1] = 20
[2] = 40
...
} unpack
unpack它接受一个数组(table)作为参数,并默认从下标1开始返回数组的所有元素 赋值语句
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础做一下策略
变量个数 > 值的个数 按变量个数补足nil
变量个数 < 值的个数 多余的值会被忽略
lua学习的更多相关文章
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...
- Lua学习笔记(二):基本语法
Lua学习指南:http://www.lua.org/manual/ 首先我们要明确的一点是:在Lua中,除了关键字外一切都是变量. Lua关键字 可以查看这个地址:http://www.lua.or ...
- Lua 学习笔记(一)
Lua学习笔记 1.lua的优势 a.可扩张性 b.简单 c.高效率 d.和平台无关 2.注释 a.单行注释 -- b.多行注释 --[[ --]] 3.类型和 ...
- lua学习:使用Lua处理游戏数据
在之前lua学习:lua作配置文件里,我们学会了用lua作配置文件. 其实lua在游戏开发中可以作为一个强大的保存.载入游戏数据的工具. 1.载入游戏数据 比如说,现在我有一份表单: data.xls ...
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...
- Lua学习笔记4. coroutine协同程序和文件I/O、错误处理
Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...
- nginx+lua学习
1. nginx+lua学习 1.1. 网关架构 1.2. nginx命令和信号控制 nginx -s stop 快速关闭,不管有没有正在处理的请求 nginx -s quit 优雅关闭方式,推出前完 ...
- (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境
Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...
- Lua学习笔记:面向对象
Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...
- lua学习之类型与值篇
类型与值 lua 是动态类型的语言 在语言中没有类型定义的语法 每个值都携带有它的类型信息 8种基础类型 用 type 可以返回这个值的类型的名称 将一个变量用于不同类型,通常会导致混乱的代码 但合理 ...
随机推荐
- Python基础篇-day6
本节简介: 1.模块1.1 时间模块1.2 random模块1.3 shutil模块1.4 shelve模块1.5 XML模块1.6 ConfigParser模块1.7 hashlib模块1.8 lo ...
- util:properties与context:property-placeholder
spring 使用注解装配的Bean如何使用property-placeholder属性配置中的值 这个问题不大不小,以前偷懒凡是碰到需要引用属性文件中的类时就改用xml来配置. 今天看了下sprin ...
- oracle之nomount、mount、open三种状态
1.先来看下外国网站上的资料怎么说 Nomount – The database instance has been started (processes and memory structures ...
- HTML5预览图片、异步上传文件
注意啦:本文的代码都是以JQuery为示例,jq_开头的变量都是jq对象. 在HTML5中,我们可以在图片上传之前对图片进行预览,就像下面这么做 jq_upload_file.change(funct ...
- 手机浏览器无法获取COOKIE的原因
手机浏览器上无法使用cookie,肯能是 1. 浏览器禁用 COOKIE ,这个简单开启即可. 2. 可能是手机所在时区有问题,将COOKIE有效期设置更长时间测试下,在更改时区
- ios常见问题 经验之谈
1.既然有问题我们该怎样解决 ? 首先大部分人都会去百度搜索来解决问题, 谁都不例外, 可是百度这东西会有很多误解, 甚至误人子弟, 同时解决问题的效率也不是很高, 如果是技术问题可以去: Googl ...
- (转)了解JNDI
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有 ...
- Python 处理文件
1.从现有文件中获取信息 使用Python中的模块,可以从现有文件中获取信息.使用“os”模块和“stat”模块可以获取文件的基本信息: import os import stat import ti ...
- Testing a Redux & React web application
Part 1 - https://www.youtube.com/watch?v=iVKPbH3qyW0 Part 2 - https://www.youtube.com/watch?v=M5lwOs ...
- 关于string的对象引用
什么都不说了, 一切都在代码里: Console.WriteLine(object.ReferenceEquals(c5, c4)); //False ...