目录
Lua语言快速入门
本教程服务于在CoppeliaSim(Vrep)中使用Lua语言编写脚本的小伙伴快速掌握Lua语言。
前言
Lua语言使用越来越广泛,在最新的编程语言排行榜上逐渐靠前,它用途广泛,尤其是游戏行业,几乎就是游戏开发的标准逻辑语言,被众多知名游戏和引擎所采用,比如:魔兽世界,CryEngine等。机器人和自动化环境的仿真也可以认为是某种“游戏”,所以CoppeliaSim(VREP)使用Lua语言来编写脚本。
本教程基本上是以Programming in Lua为蓝本的,希望可以帮助有编程基础的相关人员快速的了解这Lua语言,也着重讲解一些Lua在开发应用中要注意的要点,如果要更加全面系统的了解Lua编程,可以参阅Programming in Lua这本经典的LUA编程书籍。
Lua语言的特性
- Lua是一个小巧,简单,强大的脚本语言,使用方便,跨平台,容易和C/C++整合扩展。
- Lua提供的机制是C/C++不善于的:高级语言、动态结构、简洁、易于测试和调试等。
- Lua具有良好的安全保证,自动内存管理,简便的字符串处理功能及其他动态数据的改变。
- Lua是脚本语言中最高效的。
Lua语言的不足
- Lua语言本身不支持面向对象的设计(可以通过table模拟)
- Lua是一个很需要DIY的语言,没有大而全的库,很多功能要程序员自己实现(XML,深拷贝等)
- 缺乏一些方便高效的数据结构,如堆栈,队列等
Lua推荐库
因为是用于机器人控制,所以这里推荐的都是与科学计算有关的库。
- Lua-matrix: 纯Lua的矩阵库
- SciLua: 开源的科学计算库
- Torch: 使用Lua编写的机器学习库
SciLua官网列出了与C语言和Julia语言相比的性能,想要详细了解的可以去官网查阅。
Lua的数据类型
Lua是动态类型语言,变量不要类型定义(弱类型语言)
Lua中有8个基本类型:
nil、boolean、number、string、 function、 table、userdata和 thread
--//Lua的数据类型
local a ---->初始化为nil
print(a)
a = true --boolean
print(a)
a = 1 --number
print(a)
a=0.4 --默认情况下,lua的实现用双精度浮点来表示内部的number
print(a)
a = "hello lua"
print(a)
a = "hello lua\nhello world"
print(a)
运行结果:
nil
true
1
0.4
hello lua
hello lua
hello world
table类型:table是Lua中唯一的数据结构,一般使用table来表示数组和哈希表(HashTable)。
数组
- 在Lua中通过整数下标访问表中的元素即可简单的实现数组。并且数组不必事先指定大小,大小可以随需要动态的增长。
- 在Lua的使用习惯上,数组的下表从1开始,Lua的标准库与此习惯保持一致,因此如果你的数组下标也是从1开始,你就可以直接使用标准库的函数,否则就无法直接使用。
--//table表示数组
a = {
1, 2, 3, 4}
print(a[1], a[2], a[3],a[4])
--多维数组
mt = {
} -- create the matrix
for i=1,3 do
mt[i] = {
} -- create a new row行
for j=1,4 do
mt[i][j] = 0
end
end
print(mt[2][2])
运行结果:
1 2 3 4
0
哈希表
哈希表(HashTable)又叫做散列表,是根据关键码值(即键值对)而直接访问的数据。