C#與Lua語言學習對比一

20170405發表於2020-07-17

  Lua的語法基礎

  Lua語言 作為一種程式語言,與C#有很大的差異。所以在使用之前,先透過對比的形式來明確Lua語言有哪些特點。

  語言特性

  首先,Lua語言和C#在語言特性上就有明顯的不同:

  語言型別 :Lua是解析型語言,這種程式碼再執行時會按照從上到下的順序依次執行。而C#是編譯型語言,編寫完成後會生成特殊檔案,然後按照呼叫關係去呼叫函式;

  資料型別:Lua是弱型別語言,變數宣告時無需指定資料型別。C#是強型別語言,定義資料必須指定資料型別 ;

  書寫格式

  函式關係:Lua中的函式沒有明確的歸屬類,獨立存在。C#中的函式都屬於類。

  結尾不同:C#程式碼每行必須以; 結尾,Lua程式碼可以以;結尾,也可以沒有結尾處的標點符號。

  變數書寫格式:C#宣告變數時格式為 資料型別 識別符號 = 值;Lua語言沒有資料型別的指定。

  Lua的基本資料型別

  數值型別:Lua的數值型別,只有number,C#有int,float,double;

  布林型別:C#為bool,而Lua為boolean;

  字串型別:Lua的字串和C#的字串型別都為string,並且跳脫字元也基本相同。但Lua的字串可以被" “或’ ‘或[[ ]]包裹,’ '和” "包含的字串基本一樣(因’ ’ 包含內容也為字串,所以Lua沒有char型別),而被[[ ]]包裹的字串相當於在C#的字串前加@,從而原格式輸出。

  Lua的運算子  

  相加:C#中加號表示2數或2字串相加,但在Lua中用"…"(2個點)。

  複合運算子:Lua中不支援複合運算子和++、- -2個特殊運算子。

  形式不同的運算子:Lua中不等於為~=,C#為!=。Lua中的邏輯運算子and,or,not,C#中為&&,||,!。

  Lua中的分支結構  

  Lua中的分支結構中沒有{},使用then…end…代替。毎有一個if(布林表示式)後面都會跟著一個then,在程式碼塊寫完後,換行接end結尾。而且,Lua中沒有switch…case…語句。

  Lua中的迴圈結構

  Lua中的迴圈結構也沒有{},使用do…end…代替。

  Lua的for迴圈書寫格式為for 初值表示式,終值表示式(包含等於),迭代表示式。

  Lua中沒有do…while()…迴圈語句,但有與其相似的迴圈語句,為repeat…until()…語句,與do…while()…不同,當條件表示式為真時,結束迴圈,否則一直迴圈。Lua中跳出迴圈關鍵字沒有continue,只有break。

  Lua的函式結構

  C#中的函式返回值的地方有function代替,結尾處依舊使用end結尾。同樣,在Lua的函式結構中沒有{}存在。

  因Lua為解析性語言,執行順序從上到下。所以Lua中的函式呼叫必須寫在函式的宣告之後。而且函式是否有返回值,取決於是否包含return。

  Lua中沒有委託的概念,函式可以直接作為引數傳遞。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979119/viewspace-2705241/,如需轉載,請註明出處,否則將追究法律責任。

相關文章