Lua的语法缺失及替代措施

Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。

  1. 缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。
  2. 缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时候,代码很难看,而且效率很低。
  3. 没有逻辑运算符 AND, OR, NOT ,这在有些标志位组合表达式的表达上带来诸多不便。

另外也说一下,觉得Lua里面设计得不爽的几点:

  1. 不等号是~=, 而不是!=。个人觉得!=表达不等于的意思更准确点,~更多的意思是“非”,“非”与“不等于”还是有区别的。当然,这可能是作者与我们喜好不同的原因了。
  2. 默认除法时是浮点除,而没有相应的整除运算,要获取整数还得使用math库的截取函数。

Continue语句通过打一个补丁实现了。

逻辑运算,!=运算符,逻辑运算符,位运算符,移位运算符也通过打一个补丁实现了。

但是Lua的官网上没找到Switch的补丁,找了一下,发现可以用Lua自身的表特性实现,而且很优雅哦。

Switch语句的替代语法(所有替代方案中觉得最好,最简洁,最高效,最能体现Lua特点的一种方案)

action = {
  [1] = function (x) print(x) end,
  [2] = function (x) print( 2 * x ) end,
  ["nop"] = function (x) print(math.random()) end,
  ["my name"] = function (x) print("fred") end,
}
while true do
    key = getChar()
    x = math.ramdon()
    action[key](x)
end
时间: 2024-10-29 13:44:56

Lua的语法缺失及替代措施的相关文章

Lua脚本之语法基础快速入门

要 1.基本数据类型 2.Lua中的常用语句结构以及函数 3.Lua中的常用语句结构介绍 4.Lua中的库函数 目录[-] 一.基本数据类型 二.Lua中的常用语句结构以及函数 1.Lua中的常用语句结构介绍 三.Lua中的库函数 Lua的语法基础超级简单,非常易于上手,下面总结一些学习过程中的Lua语法基础: 在开始学习之前,先介绍一些最基本的概念,在Lua中具有一个代码块的概念,每个函数或者for循环等都是一个代码块.在Lua中,用 “- - ”来标记该行的注释,使用“- - [ [” 和

11个热门物联网开发平台详解

从1999年Kevin Ashton第一次提出这个概念以来,物联网已经经历了迅速的转变.随着近年来连接到物联网的设备在多样性和数量方面出现指数式的增长,物联网已经成为了一种主流技术,在推动现在社会的生活方式方面有着极大的潜力. 在物联网的技术与工程上,硬件与软件平台之间目前仍有明确的界限,其中大多数供应商都将精力放在硬件方面.只有极少数供应商提供物联网软件服务:例如,Mattermark根据所获总投资排名的前100名物联网创业公司中,只有13家提供物联网软件服务. 本文针对现有物联网软件平台,基

XMPP协议扩展:XEP-0198 流管理(Stream Management)中文翻译(个人整理,难免有翻译错的地方,请多多指正)

QQ讨论群:172158202 转载原文地址:http://blog.csdn.net/yuedong56/article/details/38120101 xep-0198英文文档链接地址:点击打开链接 RFC 6120中文链接地址:点击打开链接 相关參考1:点击打开链接 1.介绍 XMPP Core 用XMPP定义了流的XML技术(也就是流的建立和终止,包含认证和加密).可是核心的XMPP协议并没有为管理一个灵活的XML流提供工具. Stream Management背后的基本概念是.初始化

[转帖]一笔百亿美元的大生意:博通断臂求生 苹果会接盘吗?

一笔百亿美元的大生意:博通断臂求生 苹果会接盘吗? https://www.cnbeta.com/articles/tech/923785.htm 安华高的历史. 2019年12月20日 13:16 1956 次阅读 稿源:雷锋网 1 条评论 优胜劣汰的自然规则,在任何生存环境下,都是适用的.而在商业环境中,优劣的标准,离不开利益.上一次印证这一规则的,是 Intel 的手机基带业务:而这一次,可能将是博通的 RF 业务.据<华尔街日报>报道,博通(Broadcom)正在与瑞士信贷集团(Cre

lua参考手册01—

2 - 语言 这一节从词法.语法.句法上描述 Lua . 换句话说,这一节描述了哪些 token (符记)是有效的,它们如何被组合起来,这些组合方式有什么含义. 关于语言的构成概念将用常见的扩展 BNF 表达式写出.也就是这个样子: {a} 意思是 0 或多个 a , [a] 意思是一个可选的 a . 非最终的符号会保留原来的样子,关键字则看起来像这样 kword , 其它最终的符号则写成 `=´ . 完整的 Lua 语法可以在本手册最后找到. 2.1 - 词法约定 Lua 中用到的 名字(也称

Lua 5.1 参考手册

Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingnow.com Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 1 - 介绍 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施. Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持.

高并发 Nginx+Lua OpenResty系列(10)——商品详情页

本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格.库存.服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装网页模板的. 如图所示,商品页主要包括商品基本信息(基本信息.图片列表.颜色/尺码关系.扩展属性.规格参数.包装清单.售后保障等).商品介绍.其他信息(分类.品牌.店铺[第三方卖家].店内分类[第三方卖家].同类相关品牌).更多细节此处就不阐述了. 整个京东有数亿商品,如果每次动态获取如上内容进

lua语言--table的构建

table是lua语言中最为重要,也是最为强大的武器,最简单的构造函数是{}.--所以说当你看到{}的时候,实际上是调用了一个构造函数. 直接初始化数组: days = {"Monday","Tuesday","Wednesday"} 初始化一个表作为record: days = {m = "Monday",t = "Tuesday",w="Wednesday"}//注意record其实

【笨木头Lua专栏】基础补充06:简单的错误处理

昨天遇到另外一位独立游戏开发者,所以多聊了一会,然后-然后就没有看书了.(小若:借口!借口!) 今天来聊聊错误处理吧,不过毕竟这只是前面的章节,书上的内容似乎有点一笔带过的味道. 没关系,简单更好~ 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明,原文地址: http://www.benmutou.com/archives/1728 文章来源:笨木头与游戏开发 1.红色警报--error 我们应该能经常看到类似以下的错误信息: [LUA-print] LUA ERROR: [string "