Lua脚本认知小结
0.前言
Lua是一种脚本语言,笔者在学习cocos2dx的时候认识了这个脚本语言。
据个人了解的脚本语言最大的优势是无需编译,使用其内核可以使其跨平台运行。
JavaScript,Python,Perl这是笔者之前就知道的脚本语言,其中JavaScript实际使用最多,主要用于网页设计,特效。由于接触Lua时间并不长,无法系统总结Lua特性,这里我就以我比较熟悉的JavaScript(前端方向,下面简称JS)和Lua做一个对比。
首先得说明,JS和Lua大部分语法和使用还是很相似的,下面主要说明语法的不同之处。
1.空类型
js用null表示空,且null不等于0,null也不等于false。
lua用NIL类型表示空,NIL可以表示false,NIL不是0。
2.操作符不同
js的操作符大部分和静态语言相同,不等于即!=,连接字符串用+,取并集用||,取交集用&&,js语句结尾建议用分号;
lua的操作符有所不同,不等于为~=,连接字符串用..,取并集用or,取交集用and,lua结尾不使用分号,但是可以兼容分号。lua交换两个变量的值可以使用如下语句
a, b = b, a
3.定义以及全局
js定义一般使用var声明,也可以不使用var直接使用;全局变量需要在最外围代码定义,如在外围定义啊,函数体内需要使用全局的a的时候应使用window.a,否则视为内部定义
lua定义全局变量(函数)不需要任何声明,只有变量(函数)是本地的时候需要加上本地声明 local。
4.块结构
js的块结构,无论是方法,条件语句,循环,还是单纯的块都需要用大括号包围,条件语句中的条件需要以小括号包着;
lua中的块结构不需要大括号,但在结束的时候需要以end结尾。条件也不需要任何符号包围,下面做简单示例
function funcName(args)
-- 这样定义x为全局变量
x =
-- y 为局部变量
local y =
return x
end if x > then
x =
end while x < then
x =
end
5.for循环
js的for循环是大多数主流语言采用的三段式表达式,第一段初始化,第二段为循环条件,第三段为每次循环后进行的操作。比如进行10次的操作,js代码如下
for (var i = 0; i < 10; i++) {
alert(i);
}
Lua中的for循环算是简化的三段式表达式,不过三段都以逗号隔开,第一段表示初始值,第二段表示最大时,第三段表示每次循环的增量(第三段可以省略,默认增量为1),这里同样进行10次代码操作
for i = ,, do
print(i)
end
6.返回值
js返回值一般只有一个,要想返回多个值可以使用数组的方式。
lua可以返回多个值,简单代码如下:
function funcName(args)
x =
y =
z =
return x, y, z
end
7.注释
js单行注释使用两个斜杠,多行注释使用 /**/ 包围
lua单号注释使用两个减号,多行注释使用 -- [[ 和 ]] 包围。
暂时就总结这么多,如果以后有新的理解或者发现原来的错误,会再次修改。
Lua脚本认知小结的更多相关文章
- 在Spring中使用Redis Lua脚本批量删除缓存
背景 之前分享了一篇利用lua脚本批量删除redis的key的文章.现在项目中我打算使用spring的缓存,而Spring缓存以前我是用ehcache来做实现的.没发现什么问题..这次我换成redis ...
- 深入LUA脚本语言,让你彻底明白调试原理
这是道哥的第008篇原创 一.前言 上篇文章我们聊了gdb的底层调试机制,明白了gdb是利用操作系统提供的系统信号来调试目标程序的.很多朋友私下留言了,看到能帮助到大家,我心里还是很开心的,其实这也是 ...
- 在redis中使用lua脚本让你的灵活性提高5个逼格
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了 ...
- 《转》Unity3D研究院编辑器之创建Lua脚本模板
Unity里能创建 c#脚本模板,但是如果我想创建Lua脚本模板怎么办呢?拓展一下编辑器吧. 设置一下Lua脚本的模板地址 : Assets/Editor/Lua/Template/lua.lua ...
- StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改
前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...
- 使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- redisTemplate的spring配置以及lua脚本驱动
最近在使用spring-data-redis的redisTemplate,所以写篇使用记录吧. 1.不用多说,使用maven引入相关依赖,因为项目已经引入其他的 <dependency> ...
- redis原子性读写操作之LUA脚本和watch机制
最近在开发电商平台的子系统--储值卡系统,系统核心业务涉及到金额消费以及库存控制,因此为了解决建立在内存上高并发情况下的事务控制,使用了spring封装的RedisTemplate执行lua脚本进行原 ...
- online_jf.lua --累计在线时间领取物品(积分)的lua脚本
原作者: ayase 8-27修正 修复首次使用后的红字不需要额外进数据库导入计分表,这lua全自动生成 ----------------------------------------------- ...
随机推荐
- [转]js 回车转成TAB(利用tabindex)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- spring整合springmvc和mybatis
1.spring 1.1 jar包 1.2 spring基本配置,包扫描注解 <!-- 自动扫描 --> <context:component-scan base-package=& ...
- Ruby 踩坑 “Failed to build gem native extension”
ruby新手,总是会出现这样那样的问题,这里先记录下,希望能解决你得问题. 首先是安装ruby 环境,楼主愚钝,在公司和自己的电脑上来来回回整了好几天,每次安装 gem 包的时候总是报错,错误信息大致 ...
- Hibernate学习2--对象的三种状态以及映射关系的简单配置
上篇hibernate的博客总体简单梳理了对象持久化的一些思想以及hibernate中对象持久化化的方法,下面说说对象持久化过程的三种状态. 一.hibernate缓存的概念 1.session与缓存 ...
- Eclipse 入手配置
工欲善其事,必先利其器 在安装eclipse后进行简单的配置能够为以后的开发提高不少效率,这里慢慢先记录自己的经验. 一.编码配置 utf-8 1.worksplace: 首先设置就是workspac ...
- SQL2008使用with求余额表,流水账方式
1.先准备数据,将要求余额的表数据插入临时表 SELECT Serial, VoucherNum, SubjectNum, SubjectName, Direction, Amount INTO #T ...
- Memcache 学习笔记(二)---- PHP 脚本操作 Memcache 服务器
PHP 脚本操作 Memcache 服务器 一.PHP脚本操作Memcache方法 使用 PHP 脚本操作 Memcache,在 PHP 手册中有详细的介绍,我们可以实例化 Memcache 类,根 ...
- inline-block和float的区别,什么时候使用
文章转载于新浪博客http://blog.sina.com.cn/s/blog_5f39af320101qckt.html 只用于学习交流 什么时候使用inline-block,什么时候使用float ...
- ajax方法XHR.readyState五种状态与示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在IIS中浏览网站时出现:无法打开登录所请求的数据库 "***",登录失败
在IIS中发布Web应用程序后,浏览网站时出现无法打开登录所请求的数据库 "***",登录失败错误,如下图所示: 解决办法:打开系统Web.Config配置文件,查看数据库连接串是 ...