人品大爆發,還是全面介紹一下Squirrel語言!!

來源:互聯網
上載者:User

    使用了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){}, 這完成對一個表達遍曆

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.