Lua入门
Lua 是一种轻量小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。常用语游戏开发中。
文章图片
Lua.png Lua的优势
Lua的设计目的就是为应用程序提供灵活的扩展和定制功能,那么基于这个目的,他的优势有什么呢?
- 轻量级 编译后只有100k左右,可以说引入的成本相当低。
- 可扩展 Lua本来就是C做的,所以Lua调用C或者C++的类库有天然的优势,这里的扩展,实际上是方便使用其他的类库,常用于游戏开发,也是这个原因,调用本地的类库方便。
- 语法简单 脚本语言,语法相对简单,容易上手,学习成本低。
【Lua入门】Lua与其他语言一样,也有变量,数组,运算符,流程控制,循环判断,函数,字符串,数据结构等。这里只介绍与Java差异的地方。
- 变量默认是全局,局部需要用 local 修饰
- 变量可以同时赋值多个,采用多略,少 nil 的策略
- 判断语句是if..then..end
- 循环语句是for..do..end
- 函数有多个返回值,与赋值语句类似
- 不等于是“~=” ,非是not
- 用string. 可以有很多自带的字符串操作,如:string.reverse(arg)
- 数组默认下标从1开始,也可以用负数,负数表示从后往前算
- table是Lua特有的数据类型,是一个K,V键值对,用table.操作
- for k, v in pairs(t) do..end 迭代table,k&v 对应 键&值
- for i, v in ipairs(t) do..end 迭代table,i是带下标
- require "<模块名>" 引用其他模块
- table可以setmetatable元表,为table增加额外的功能,__add,__call等
Lua与Java交互
LuaJ是纯Java实现的Lua解析器,不需要dll文件,不存在内存风险。维护团队更新也比较活跃。可谓首选。
首先引入jar包
org.luaj
luaj-jse
3.0.1
创建Java类,如Main.java
import org.luaj.vm2.Globals;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.jse.JsePlatform;
/**
* 程序主要入口
*
* @author jack
*/
public class Main {public static void main(String[] args) {
//初始化lua运行时环境
Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.loadfile("lua/main.lua");
chunk.call();
//获取入口函数
LuaValue func = globals.get(LuaValue.valueOf("main"));
String result = func.call().toString();
System.out.println(result);
}
}
在resources目录下创建lua脚本,如main.lua
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by jack.
--- DateTime: 2018/10/30 21:07
---
--- Lua入口函数
function main()
return "hello world!"
end
这是Java类调用Lua脚本,其实在Lua脚本中还能使用Java类,比如一些工具类。
比如新建一个日志Java类Logger
/**
* @author jack
*/
public class Logger {
public static void log() {
System.out.println("Logger Logger Logger");
}
public static void log(String param) {
System.out.println(param);
}
}
在main.lua中用以下方式就能触发Java类
---
--- Generated by EmmyLua(https://github.com/EmmyLua)
--- Created by jack.
--- DateTime: 2018/10/30 21:07
---
local logger = luajava.bindClass("third.jar.lua.Logger")
function main()
logger:log()
return "hello world!"
end
确实非常方便
总结
Lua作为一个脚本语言,嵌入的应用程序中非常方便,成本也不高。但是实际项目中用的却不多,我总结主要原因
- Lua的执行性能相比Java要差一些
- Lua应用于游戏领域较多,其他领域的Java程序员不习惯使用
- Lua的优势在于与C的无缝调用,Java的应用,这种场景并不多,况且还有JNI在
推荐阅读
- typeScript入门基础介绍
- Android|Android sqlite3数据库入门系列
- Android下的IO库-Okio源码解析(一)|Android下的IO库-Okio源码解析(一) 入门
- 深度学习-入门
- 第三章|第三章 进校园重拾旧梦 登讲台初为人师第一节 接乱班面临考验 ,遇高师指点入门
- iOS开发技术之美—iOS入门技术的基础学习
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- 【入门】Python网络爬虫与信息提取1
- 垂直农场101-室内农业入门知识
- 所有Python入门书籍的整理,初学者必看,附赠所有电子版(三)