在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
为了搞unity的热更新,可能需要用到lua. lua是什么东西?一种脚本语言。脚本语言一般轻量, 简单. js大家都很熟悉吧。因此我拿它与lua对比
相同点----------------------------------------------------- 基本类型都差不多,追求简单。 string / string number / number 都没有int, double等,是不是很简单呀 boolean / boolean function / function 都是作为第一类,也可作为参数,可变参数也都是... object / table property/metatable 原型链 __index里面的元素不被修改 null | underfined / nil var | let / local 定义变量的方式差不多(期版本,如果不定义变量,就是全局属性和lua类似) async / coroutine 都有协程 window|global/_G 定义的全局变量 ... | ... 可变参数
不同点---------------------------------------------------- js有变量提升 lua没有变量提升 js==,===,!=和!==运算符的优先级低于>,>=,<,<=。 lua中 所有比较运算符都具有相同的优先级。 js中数组的下标 从0开始 lua中数组的下标从1开始 js全局变量存在window中 lua全局变量存在_G中 js模块化 import/export lua模块化require/return(实质上就是函数) js块是放在{}中的 lua中块是以end结束 js的运算符+有两重性(连接符,运行算), lua的运算符+只表示运算符,lua的连接符用... js判断相等 “5”==5 true lua判断相等 "5"==5 false; js判断不等 5 != "5" lua判断不等 5 ~= "5" js逻辑运算符&& || ! lua逻辑运算符 and or not js正则表达式转义字符用\ lua正则表达式转义字符用% js有表示空有两种null, underfined lua表示空用用nil js表示串块`` lua表示字符串块 [[]] js表里的初始索引以0开始 lua表里的初始索引以1开始 js有array类型 lua里没有,用table充当 js有局部变量/全局变量通过作用域区分 lua通过关键字区分 js中对象参与计算 valueOf/toString lua 通过 setmetatable({},{__add}) js中属性调用方法 array. / str. lua中 table(arr,), sting(str, ) js中有switch,continue,i++,三元去处符等 lua中没有 js语句块 {} lua do end
---tabel相关的方法--- 很简单 concat,insert,remove,sort 1:js arr转化为字符串 arr.join(",") lua 中数组转化为字符串 table.concat(table, ",") 2:js arr插入,删除 shift,pop,splice,unshift,push lua中 tabel.insert(tabel, ele), tabel.remove(tabel, ele) 3:js排序 arr.sort lua中 table.sort(table, ...)
---function相关的方法--- 1:js函数作为第一对象 lua函数作为第一对象 2:js函数有作用域 var lua函数也有作用域 local 3:js闭包,所谓的闭包就是用域产生的 lua与js的闭包一样
--模拟面向对象(实质一样,都是通过属链来的) js通过 function和属性链 来模拟 lua通过 {}和元表 来模拟 ------js实现---------------------------------------------------- function People() { ** 其实上面的是语法糖,new function的本质是 创建{},指定属性链,内部直接做掉了。 let people = {} people.__proto__ = {}
---调试--- lua是比js更严谨的语言,不是所有的东西都能参与计算,如果table要参与计算,请借助于元表 用next找不到是会报错的
总结 lua比js更简单。。。,如果你真的理解了js, 那你也就会了lua. lua就是缩量版的js, 怎么说呢? >去掉了变量提升 >去掉了操作符的多义性(js的很多符号有两重性+,lua中没有) >弱化了原型链(虽然思想都差不多,但是lua的原型链还是弱了点) >简化了api 还是那句话 如果你真的精通js,那么半小时lua就入门了
|
请发表评论