[Lua] Lua學習筆記(二) Lua語法簡述(一)

 Lua學習筆記(二) Lua語法簡述(一)

    這幾天生活上瑣碎的事情,叫我沒有時間來更新博文,好吧閒話少說。今天我們來學習Lua中的語法。

    對於有過C / C++基礎的朋友們來說 Lua 的語法差別並不是很大。先從最基礎的寫法開始。

類型:

    在C/C++中,我們對於變量有一個明確的定義,那就是類型。是的,每一個變量都有一個自己的類型,對一個char 型的變量直接賦予 int 值的話,後果是不可預料的。

    但是,在 Lua 中類型這個詞變得很模糊。因爲,變量在聲明的時候指定的類型,在後面是可以改變的。

例如:

  1. a=0; 
  2. print(type(a)); --輸出number 
  3. a="Hello"
  4. print(type(a)); --輸出string 

    在 Lua 中類型是不安全的。例如上述代碼,一個簡單的賦值,可以讓變量 a 的類型由 number 變成 string ,可見在 Lua 中一定要謹慎賦值。代碼中的 type 方法,正如字面的意思,他是來辨別一個變量的類型。也可以在腳本中,去辨別一個變量是否因爲賦值而導致非意願類型錯誤。

    下面我們看下 Lua 中的常用類型。

  1. a=nil; 
  2. print(type(a));    --輸出nil 
  3. a="Hello World"
  4. print(type(a));    --輸出string 
  5. a=10; 
  6. print(type(a));    --輸出number 
  7. a=true
  8. print(type(a));    --輸出boolean 
  9. a={}; 
  10. print(type(a));    --輸出table 
  11. a=function (a,b) return a+b end 
  12. print(type(a));    --輸出function 

    在 Lua 中,如果一個變量只是聲明。例如:a; 那麼他默認的類型是 nil 。

    a=function (a,b) return a+b end 這段代碼,想必有些人不大明白,待會兒在函數中,我會講明的。

    a={}; 在 Lua 中存在一種特殊的類型,它就是Table。它在定義上類似於C中的數組。但,僅僅是類似。因爲,他比數組可要強大的多。我們使用數組的時候,數組的下標必須是數字。但是,Table 中的下標可以是其他的東西。

例如:

  1. Male = "Pengfei"
  2.  
  3. TabelTest= 
  4.     1,              --相當於TabelTest[1] 爲1 
  5.     [5] = 40,       --相當於TabelTest[5] 爲40 
  6.     test=  
  7.     { 
  8.         ["age"]=27, --和Name=Male寫法可互換 
  9.         Name=Male 
  10.     }, 
  11.     20              --相當於TabelTest[2] 爲20 

    這裏的test 是不佔數組數字下標的步進,大家要注意。在Table的賦值中默認是從[1]開始的,而不同於 C 中從 [0] 開始。

運算符:

    剛剛我們介紹過了 Lua 中常用的幾種類型,但是,還有兩種類型:UserData、Thread因爲這兩種我們目前還用不到,所以,我們會在後面對其進行介紹。

    下面我們來介紹下 Lua 中的運算符:

    基礎運算:和C中相同,有+,-,*,/。但是,Lua 中還多了一個就是 ^ 這個符號,他是用來進行乘方的。

    比較運算:這個也與 C 中一樣,擁有 < , > , <= , >= ,== 這裏需要注意下,那就是不等。C中不等是 != 。 在 Lua 中,不等是 ~= ,這個是Lua中來表達不等的運算符。這裏需要特殊牢記下。

    邏輯運算:and or not 這三個是在Lua中進行邏輯運算的。說到邏輯運算,這裏要提一句,在 Lua 中只有nil是false,其他不管什麼,即使是0也爲true。經常像我一樣用0來當false用的同學們要注意。繼續來介紹邏輯運算,and的作用是判斷and左邊的值,是否爲false,如果爲false則返回左邊的值,如果不是的話則返回右邊的值。而or正好與and相反,or的作用是判斷or左邊的值,是否爲true,如果爲true則返回左邊的值,如果不是的話則返回右邊的值。

    字符連接:Lua中的字符連接比較簡單,類似於JAVA的那種"Hello "+"World" 這樣的寫法。Lua中是用..來完成這個操作的。例如:a="Hello "+"Pengfei"; 那麼a的值就是"Hello Pengfei"。

    運算符優先級,由高到底排列:

         ^   (乘方)
     not - (一元運算)
     * /
     + -
     ..(字符串連接)
     < > <= >= ~= ==
     and
     or

好了,今天就先寫到這裏,天氣凍手啊,我也要早些睡覺了。明天還有更多的任務要去完成,明天我會寫下剩下的,例如:函數,常用的if for while 在 Lua 中的寫法。各位,晚安。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章