LUA的基礎知識

kunnan發表於2019-02-16

前言

Lua是動態型別語言,變數不要型別定義,只需要為變數賦值。

  • 全域性變數

全域性變數

在預設情況下,變數總是認為是全域性的。

  • 全域性變數不需要宣告,給一個變數賦值後即建立了這個全域性變數,訪問一個沒有初始化的全域性變數也不會出錯,只不過得到的結果是:nil。
  • 當且僅當一個變數不等於nil時,這個變數即存在。

Lua 資料型別

值可以儲存在變數中,作為引數傳遞或結果返回。
Lua中有8個基本型別分別為:nil、boolean、number、string、userdata、function、thread和table。

nil    這個最簡單,表示一個無效值(在條件表示式中相當於false)。 nil 還有一個"刪除"作用
boolean    包含兩個值:false和true。
number    表示雙精度型別的實浮點數
string    字串由一對雙引號或單引號來表示
function    由 C 或 Lua 編寫的函式
userdata    表示任意儲存在變數中的C資料結構
thread    表示執行的獨立線路,用於執行協同程式
table    Lua 中的表(table)其實是一個"關聯陣列"(associative arrays),陣列的索引可以是數字或者是字串。在 Lua 裡,table 的建立是通過"構造表示式"來完成,最簡單構造表示式是{},用來建立一個空表。
  • 我們可以使用type函式測試給定變數或者值的型別:
print(type("Hello world"))      --> string
  • boolean(布林)

boolean 型別只有兩個可選值:true(真) 和 false(假),Lua 把 false 和 nil 看作是”假”,其他的都為”真”:

  • string(字串)
字串由一對雙引號或單引號來表示。
也可以用 2 個方括號 "[[]]" 來表示"一塊"字串
字串連線使用的是 .. 
使用 # 來計算字串的長度,放在字串前面
  • table(表)

在 Lua 裡表的預設初始索引一般以 1 開始。

local tbl = {"apple", "pear", "orange", "grape"}
for key, val in pairs(tbl) do
    print("Key", key)
end

table 不會固定長度大小,有新資料新增時 table 長度會自動增長,沒初始的 table 都是 nil。