人品大爆发,还是全面介绍一下Squirrel语言!!
2008-09-01 22:23
357 查看
使用了Squirrel一段时间,对这个新语言也有所了解了,还是决定写一个语言本身的介绍,算是在国内抛砖引玉吧。我目前使用的是Squirrel 2.2版,这是一个稳定的版本,文档也比较齐全。Squirrel 3.0 Alpha版已经出来了,但是没有什么文档,我只大概看了一下。
1:保留字:
Squirrel的保留字与C++几乎一致,但Squirrel没有指针,内存由虚拟机管理,不需要手工申请和释放,所以没有new和delete关键字。Squirrel是弱类型的,所以也就没有char、float、int、double等关键字,值得注意到是Squirrel不支持double,其浮点数内部是float,这可能与Squirrel主要为游戏设计有关。
Squirrel新增了一些关键字,主要有local、typeof、instanceof、resum、yield、delegate、 parent等,其中delegate、 parent关键字在Squirrel3.0Alpha 版中似乎有变化,这个以后再讨论,resum、yield用于Squirrel的“协程”,可以理解为非抢先式的内部线程(Squirrel虚拟机是单线程的,一个虚拟机内部不支持系统的线程,这和Lua很相似)。
delegate、 parent用于类“委托”及父类访问,这个也可以暂时不考虑。除此之外,Squirrel几乎跟C++一致。
值得注意的是local关键字,Squirrel中的变量是需要定义的,和C++一样,你可以在程序的任何地方定义,但定义的时候必须使用local关键字。使用local表明变量在堆栈里创建,离开函数则自动销毁,这与C++在函数内定义变量的方式一致。
2:代码块及表达式
Lua很讨厌的是do..end来表示代码块,反正我不习惯,Squirrel很体贴是使用{..},这就顺眼多了。
对于表达式,Squirrel跟C/C++几乎一致,可以使用+=、-=..等运算符,甚至可以使用
?:三元运算符,Squirrel 3.0版支持Lambda表达式,但我还没有用过。
3:控制循环语句
Squirrel的控制循环语句与C/C++也一致,这也是我使用Squirrel的原因之一,Lua的for循环就很难用,if..else..
也不够简洁。
Squirrel循环控制语句与C/C++唯一不一致的是增加了foreach循环,而且这个foreach不像Lua一样需要什么“闭包”,可以很简单的使用,例如
foreach(local
i in arrayVar){},这完成对一个数组的遍历
foreach(local
key,value in tableVar){}, 这完成对一个表达遍历
1:保留字:
Squirrel的保留字与C++几乎一致,但Squirrel没有指针,内存由虚拟机管理,不需要手工申请和释放,所以没有new和delete关键字。Squirrel是弱类型的,所以也就没有char、float、int、double等关键字,值得注意到是Squirrel不支持double,其浮点数内部是float,这可能与Squirrel主要为游戏设计有关。
Squirrel新增了一些关键字,主要有local、typeof、instanceof、resum、yield、delegate、 parent等,其中delegate、 parent关键字在Squirrel3.0Alpha 版中似乎有变化,这个以后再讨论,resum、yield用于Squirrel的“协程”,可以理解为非抢先式的内部线程(Squirrel虚拟机是单线程的,一个虚拟机内部不支持系统的线程,这和Lua很相似)。
delegate、 parent用于类“委托”及父类访问,这个也可以暂时不考虑。除此之外,Squirrel几乎跟C++一致。
值得注意的是local关键字,Squirrel中的变量是需要定义的,和C++一样,你可以在程序的任何地方定义,但定义的时候必须使用local关键字。使用local表明变量在堆栈里创建,离开函数则自动销毁,这与C++在函数内定义变量的方式一致。
2:代码块及表达式
Lua很讨厌的是do..end来表示代码块,反正我不习惯,Squirrel很体贴是使用{..},这就顺眼多了。
对于表达式,Squirrel跟C/C++几乎一致,可以使用+=、-=..等运算符,甚至可以使用
?:三元运算符,Squirrel 3.0版支持Lambda表达式,但我还没有用过。
3:控制循环语句
Squirrel的控制循环语句与C/C++也一致,这也是我使用Squirrel的原因之一,Lua的for循环就很难用,if..else..
也不够简洁。
Squirrel循环控制语句与C/C++唯一不一致的是增加了foreach循环,而且这个foreach不像Lua一样需要什么“闭包”,可以很简单的使用,例如
foreach(local
i in arrayVar){},这完成对一个数组的遍历
foreach(local
key,value in tableVar){}, 这完成对一个表达遍历
相关文章推荐
- 一片全面介绍Script Encoding加密的文章,很全面可惜是E文的(那位个哥们e文好翻译一下)
- 一片全面介绍Script Encoding加密的文章,很全面可惜是E文的(那位个哥们e文好翻译一下)
- 一片全面介绍Script Encoding加密的文章,很全面可惜是E文的(那位个哥们e文好翻译一下)
- 转载了一篇PGM文件格式的介绍,虽然不是特别全面,大体了解下还是够了
- 收藏一下,很全面的总结// 程序员到项目经理:从内而外的提升(比较全面的介绍)
- [转]全面介绍Windows内存管理机制及C++内存分配实例(一):进程空间
- 简单介绍一下vue2.0
- oracle之Flash Recovery Area全面介绍
- 你们公司是如何做需求管理的?这里给大家介绍一款功能全面的需求管理工具
- 首先给大家介绍一下数据库project师,数据库project师(Database Engineer),是从事管理和维护数据库管理系统(DBMS)
- 为各位看官来介绍一下JBPM是个啥东东
- 最全面的C#开源项目介绍
- Windows安全模式的应用技巧全面介绍
- 介绍一下unicode,ansi,utf-8,unicode big endian编码
- 全面理解ERP和APS:用饭局的例子说明,MRP 还是APS
- 《HTTP权威指南》:全面的HTTP协议的介绍,不够深入
- C++面试题:介绍一下STL,STL如何实现vector
- 介绍一下你自己
- BAT人工智能生态时局图:全面战争爆发前夜
- 详细介绍一下 Smoke Testing(冒烟测试)