文档章节

Lua 语言的陷阱

沙枣
 沙枣
发布于 2015/10/18 14:16
字数 510
阅读 147
收藏 12
点赞 0
评论 0

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 的比较操作符 不等于是 '~=' 而不是 '!=', 只能说这个巴西人和别人不同。

© 著作权归作者所有

共有 人打赏支持
沙枣
粉丝 22
博文 148
码字总数 176652
作品 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
Lua1.1 Lua 的设计和实现 (一)

说明: 这个文档是 Lua1.1 的 doc 目录里的 lua.ps 文件。 同时这个文档可以这里找到:http://www.lua.org/semish94.html 原文版权归原作者所有,这篇翻译只是作为学习之用。如果翻译有不当之...

晓寒
2014/09/03
0
0
【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境

前言 这篇文章针对的是基于 LuaJIT 的环境配置。借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍。如果你不是很清楚自己是需要 Lua 还是 LuaJIT,那么建议你从 LuaJIT 起步。LuaJIT 对应...

ios122
2017/11/11
0
0
游戏之中的粘合剂---Lua脚本语言

前言: 每当自己想要放弃的时候,可以告诉自己再多撑一天、一个星期、一个月,再多撑一年吧。你会发现拒绝退场的结果令人惊讶! --摘自短篇原创文学 --------------------------------------...

loving_forever_
2016/11/23
0
0
为什么我选择 Lua ?

在这篇文章中,我将向你解释为什么要使用Lua。我写这篇文章最初的动机是由于Lua邮件列表中的一则消息 “why isn't Lua more widely used?” 。针对这个消息的回复各种各样,有的说是因为缺少...

虫虫
2012/02/27
28.2K
23
Lua的网友评论

Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。 它可以作为一个强大、轻量...

红薯
2009/12/11
490
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
19分钟前
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
40分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
今天
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
今天
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
今天
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
今天
1
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
今天
1
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
今天
1
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
今天
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部