您的位置:首页 > 产品设计 > UI/UE

人品大爆发,还是全面介绍一下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){}, 这完成对一个表达遍历
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: