轉(zhuǎn)自我的cnblogs
最近在搜索AngleScript bug時(shí),突然發(fā)現(xiàn)一個(gè)新的輕量級(jí)OO腳本語(yǔ)言Squirrel 翻譯過(guò)來(lái)就是松鼠的意思
來(lái)看下這個(gè)腳本的樣子:
local table = { a = "10" subtable = { array = [1,2,3] }, [10 + 123] = "expression index"} local array=[ 1, 2, 3, { a = 10, b = "string" } ];foreach(i,val in array){ ::print("the type of val is"+typeof val);}
class Entity{ constructor(etype,entityname) { name = entityname; type = etype; } x = 0; y = 0; z = 0; name = null; type = null;}function Entity::MoveTo(newx,newy,newz){ x = newx; y = newy; z = newz;}class Player extends Entity { constructor(entityname) { Entity.constructor("Player",entityname) } function DoDomething() { ::print("something"); } } local newplayer = Player("da playar"); newplayer.MoveTo(100,200,300);
特性:
1. 開(kāi)源,zlib的那種無(wú)限制使用的license
2. 動(dòng)態(tài)類(lèi)型
3. Delegation代理支持
4. 支持類(lèi),及繼承
5. 高階函數(shù)功能
6. Generator
7. 纖程(Coroutines)
8. 尾遞歸(tail recursion)
9. 異常捕獲
10. 引用計(jì)數(shù)方式的垃圾回收(有點(diǎn)過(guò)時(shí))
11. 弱引用
12. 6k行編譯器及虛擬機(jī)代碼
13. 可選的16位字符串
14. 支持64位cpu
總體觀(guān)感,這種腳本語(yǔ)言語(yǔ)法結(jié)構(gòu)類(lèi)似C++及l(fā)ua的雜合體,很多地方像lua。OO部分又像Python
這里是一個(gè)完整文檔說(shuō)明,可以詳細(xì)了解其vm接口及api調(diào)用。
不過(guò)到目前為主,未看到有成熟的商業(yè)項(xiàng)目使用