文档章节

Lua 语言的陷阱

沙枣
 沙枣
发布于 2015/10/18 14:16
字数 510
阅读 148
收藏 12

Lua 语言核心很小,用纯 C 构建,方便嵌入许多系统,而且语法简洁,文档齐备,还有速度更快的 LuaJIT 的解释器。所以决定用这种语言实现 Spp 的算法。

Lua 的标准库很小,JSON, 和 Seriarial Data 的模块都是第三方提供的,出了问题,是很可能的事情。

  1. Lua 数组的索引值是从 1 开始的,这和其他语言不同,所以数组的长度和最后一个索引的值是相等的。我想这更直观,但习惯了别的语言后,就会对这个特性很疑惑。

  2. Lua 的 Table 实现的 Hash,虽然 Lua 允许任何值,包括 table 做 key, 但查看这种数据的 JSON, DataDumper 模块都不支持 key 是 table 的数据结构,无法查看,所以出了问题也不知道。

  3. Lua 的正则是用百分号引起的:%d %s %D %S, 数量标志还有减号,aa-, 等同于别的语言的 aa*?, Lua 没有split, 但有 join, 就是 table.concat, 只能合并字符串和数字,别的数据类型会让 Lua 崩溃。(而不是报错)

  4. Lua 的 table, push (table.insert)以后,返回的值不一定是变化后的 table, 可能是 nil, 不能这样写:

    t = table.insert(t, 1, x)

Lua 会悄无声息的将你的数据给抹杀掉。

  1. Lua 的 table 无法对比,即使: {1,2} == {1,2} 也是返回 false. 想要对比,就要逐个 key, value 的对比,直到对比的是数据。

  2. Lua 遍历 Array,Hash 的关键字是不同的,但都要声明 key, Array 也能用 pairs(array), 而 Hash 就不能用 ipairs(hash).

  3. 输出不带回车的函数是 io.write, print 默认是带回车的。

另外 Lua 的函数声明关键字 function 太长了,如果短一些,会更好。Lua 的比较操作符 不等于是 '~=' 而不是 '!=', 只能说这个巴西人和别人不同。

© 著作权归作者所有

共有 人打赏支持
沙枣
粉丝 23
博文 120
码字总数 172858
作品 0
深圳
后端工程师
编程大牛推荐书籍

云风(中国游戏编程先行者,前网易游戏部门资深程序员,简悦创始人): C++编程思想 Effective C++ 深度探索C++对象模型 C++语言的设计和演化 C专家编程 C陷阱与缺陷 C语言接口与实现 Lua程序...

nop4ss
2015/10/10
34
0
Cocos2d-x 脚本语言Lua介绍

https://blog.csdn.net/wwj_748/article/details/31837997 Cocos2d-x 脚本语言Lua介绍 本篇博客记录Lua学习,学习来自eoe论坛,Lua语言开发Cocos2d-x游戏入门视频教程,猛戳以下地址: http...

tropicofcancer9
04/19
0
0
愤怒的小鸟开发语言火爆,挤掉 JavaScript

随着的iOS开始支持的Lua脚本语言,许多iPhone游戏开始使用Lua的开发,例如愤怒的小鸟游戏,Lua的流行指数快速窜起,甚至在今年6月超越了JavaScript中,进入前10 TIOBE大开发语言排行。 根据全...

红薯
2011/07/04
7.6K
18
【最新版】从零开始在 macOS 上配置 Lua 开发环境

脚本语言,你可能更需要的是 Lua 不同的脚本语言有不同的特性,第一接触的脚本语言,可能会影响自己对整个脚本语言的理解和认知。我以前接触最多的脚本语言是 JavaScript。后果就是:我一度以...

ios122
2017/11/10
0
0
2011年6月编程语言排行榜,Lua进入前十

TIOBE发布了2011年6月份的编程语言排行榜,其中Lua语言延续上个月的增长势头,历史上第一次进入排行榜前十位,Java、C、C++依 然占据排行榜前3甲。1到10名依次为:Java、C、C++、C#、PHP、V...

vVqsGHcN
2011/06/08
15.2K
32

没有更多内容

加载失败,请刷新页面

加载更多

jQuery学习笔记180923

射手

颖伙虫
4分钟前
0
0
[python] colorama 模块 - 改变控制台输出文本的颜色

除了使用 PyQt 这样的图形化开发框架外,基本上 python 程序都是跑在控制台中的。很多时候,单纯使用黑白的文字不能很好地突出我们要显示的信息。有时候我们需要将错误的提示使用红色标注,而...

cometeme
9分钟前
0
0
Makefile 学习 2 - 基于若干 Blog 的汇总

基于若干 Blog 汇总的 makefile 教程 陈皓 https://blog.csdn.net/haoel/article/details/2886 Makefile 进阶 1. Makefile 中的内容 显式规则。显式规则说明了,如何生成一个或多的的目标文件...

公孙衍
24分钟前
0
0
NIO与BIO的区别、NIO的运行原理和并发使用场景

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的...

Java干货分享
42分钟前
1
0
72.告警系统邮件引擎 运行告警系统

20.23/20.24/20.25 告警系统邮件引擎 20.26 运行告警系统 20.23/20.24/20.25 告警系统邮件引擎 邮件首先要有一个mail.py,以下。 因为我们之前zabbix的时候做过,就可以直接拷贝过来 mail.s...

王鑫linux
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部