Lua的语法缺失及替代措施
2016-03-01 10:59
232 查看
Lua的语法缺失及替代措施
Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。
缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。
缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时候,代码很难看,而且效率很低。
没有逻辑运算符 AND, OR, NOT ,这在有些标志位组合表达式的表达上带来诸多不便。
另外也说一下,觉得Lua里面设计得不爽的几点:
不等号是~=, 而不是!=。个人觉得!=表达不等于的意思更准确点,~更多的意思是“非”,“非”与“不等于”还是有区别的。当然,这可能是作者与我们喜好不同的原因了。
默认除法时是浮点除,而没有相应的整除运算,要获取整数还得使用math库的截取函数。
Continue语句通过打一个补丁实现了。
逻辑运算,!=运算符,逻辑运算符,位运算符,移位运算符也通过打一个补丁实现了。
但是Lua的官网上没找到Switch的补丁,找了一下,发现可以用Lua自身的表特性实现,而且很优雅哦。
Switch语句的替代语法(所有替代方案中觉得最好,最简洁,最高效,最能体现Lua特点的一种方案)
Lua的一个设计方针是简单,能不加入的语言特性就尽量不加入。于是,Lua中缺少了一些我们常用的语法。下面仅以C语言做参考。
缺少continue语句,虽然对逻辑实现没本质影响。但让我们在编程时,代码结构的写法有一些生硬的感觉,不灵活。
缺少了switch-case语法,仅用if-elseif-else来替代,在选项比较多的时候,代码很难看,而且效率很低。
没有逻辑运算符 AND, OR, NOT ,这在有些标志位组合表达式的表达上带来诸多不便。
另外也说一下,觉得Lua里面设计得不爽的几点:
不等号是~=, 而不是!=。个人觉得!=表达不等于的意思更准确点,~更多的意思是“非”,“非”与“不等于”还是有区别的。当然,这可能是作者与我们喜好不同的原因了。
默认除法时是浮点除,而没有相应的整除运算,要获取整数还得使用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
相关文章推荐
- lua 类、继承、多重继承
- Lua处理中英文混合字符串
- lua 与 c 的相互调用
- Visual Studio2012 Lua插件--BabeLua
- 请教大家关于wireshark添加lua自定义规则解析模块的问题
- 55.Evaluate the following two queries:
- 55.Evaluate the following two queries:
- lua 库
- lua zmq client
- lua zmq server
- 如何在Windows平台使用VS搭建C++/Lua的开发环境
- lua 快速排序
- lua中的坑
- cordova build 报错:failed to notfy projectevluationlistener.afterevaluate<>.
- Ulua_toLua_基本案例(五)_LuaCoroutine
- Ulua_toLua_基本案例(四)_AccessingLuaVariables
- Ulua_toLua_基本案例(三)_CallLuaFunction
- Ulua_toLua_基本案例(二)_ScriptsFromFile
- Ulua_toLua_基本案例(一)
- Lua的C++封装