Lua學習筆記(二) Lua語法簡述(一)
這幾天生活上瑣碎的事情,叫我沒有時間來更新博文,好吧閒話少說。今天我們來學習Lua中的語法。
對於有過C / C++基礎的朋友們來說 Lua 的語法差別並不是很大。先從最基礎的寫法開始。
類型:
在C/C++中,我們對於變量有一個明確的定義,那就是類型。是的,每一個變量都有一個自己的類型,對一個char 型的變量直接賦予 int 值的話,後果是不可預料的。
但是,在 Lua 中類型這個詞變得很模糊。因爲,變量在聲明的時候指定的類型,在後面是可以改變的。
例如:
- a=0;
- print(type(a)); --輸出number
- a="Hello";
- print(type(a)); --輸出string
在 Lua 中類型是不安全的。例如上述代碼,一個簡單的賦值,可以讓變量 a 的類型由 number 變成 string ,可見在 Lua 中一定要謹慎賦值。代碼中的 type 方法,正如字面的意思,他是來辨別一個變量的類型。也可以在腳本中,去辨別一個變量是否因爲賦值而導致非意願類型錯誤。
下面我們看下 Lua 中的常用類型。
- a=nil;
- print(type(a)); --輸出nil
- a="Hello World";
- print(type(a)); --輸出string
- a=10;
- print(type(a)); --輸出number
- a=true;
- print(type(a)); --輸出boolean
- a={};
- print(type(a)); --輸出table
- a=function (a,b) return a+b end
- print(type(a)); --輸出function
在 Lua 中,如果一個變量只是聲明。例如:a; 那麼他默認的類型是 nil 。
a=function (a,b) return a+b end 這段代碼,想必有些人不大明白,待會兒在函數中,我會講明的。
a={}; 在 Lua 中存在一種特殊的類型,它就是Table。它在定義上類似於C中的數組。但,僅僅是類似。因爲,他比數組可要強大的多。我們使用數組的時候,數組的下標必須是數字。但是,Table 中的下標可以是其他的東西。
例如:
- Male = "Pengfei";
- TabelTest=
- {
- 1, --相當於TabelTest[1] 爲1
- [5] = 40, --相當於TabelTest[5] 爲40
- test=
- {
- ["age"]=27, --和Name=Male寫法可互換
- Name=Male
- },
- 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 中的寫法。各位,晚安。