LUA语言如何实现交互 ?

LUA语言如何实现交互 ?,第1张

Lua是扩展语言,有两种方式来使用Lua:

C语言、Delphi等其它语言编写的程序调用Lua,把Lua作为一个扩展。

Lua本身去调用外部的库,这些库由C语言、Delphi等编写而成。

Lua语言本身非常简单,单独靠Lua自身,是无法编写出真正有用的程序。

所以你要学的话,除了Lua语言,你应该至少先要熟悉C语言、Delphi等其它语言。

Lua的官方网站上有下载,Lua的核心就是一个文件: lua51dll 或最新的lua52dll

Lua有8种基础数据类型: nil, boolean, number, string, function, userdata, thread, and table

nil类型有一个值,nil,它的主要属性是不同于任何其他值;它通常表示缺少有用的值。

布尔类型有两个值,false和true。nil和false都使条件为false,它们统称为false values。任何其他值都使条件为真。

number有两个子类型:integer 和 float
标准Lua用32位integers 和双进度64位floats

string表示不可变的字节序列

Lua可以调用(和 *** 作)用Lua编写的函数和用C编写的函数

userdata值表示一块原始内存,
userdata的值只能通过C的API创建和修改,不能通过Lua创建和修改,

userdata有两种:full userdata,light userdata

full userdata 是一个由Lua管理内存块的对象
light userdata 是一个简单的C指针

thread代表独立的执行线程,它被用来实现协程。Lua线程与 *** 作系统线程无关。

table是Lua中唯一的数据结构机制;它们可以用来表示普通的数组(arrays)、列表(lists)、符号表(symbol tables)、集合(sets)、记录(records)、图(graphs)、树(trees)等。
table可以包含所有类型的值(nil除外),还可以使用除nil和NaN之外的任何Lua值作为table的索引。
table也可以携带方法。
为了避免歧义,任何作为键的浮点数等于一个整数都会被转换为该整数

详细请参考 官方文档 。

lua-cmsgpack是一个开源的MessagePack实现方式、纯C的库,没有任何其它依赖,编译后可以直接被lua调用,目前主要支持Lua 51/52/53 版本。
1、什么是MessagePack?

官方的解释是:

跟JSON及其类似,但是比JSON更快并且占用空间更小,举个官方给出的例子,直接截官方图:

翻译官方的解释:
MessagePack是一种高效的二进制序列化格式, 它允许在多种语言(如JSON)之间交换数据,但它越来越小, 小整数被编码为单个字节,典型的短字符串除了字符串本身之外还需要一个额外的字节。

目前市面上流行的开发语言MessagePack几乎支持,官方的地址为: >一般不好调用的,除非安卓把函数暴露到lua中,一般是作为lua扩展。
比如你看wireshark就有个lua扩展,可以下载看一下。当然,游戏wow也有个lua扩展。
lua本身是个很小的语言核心,基本需要扩展才能符合具体应用的需求。
用户通过扩展编写lua脚本 *** 作应用的各个方面。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12633260.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存