首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Lua 5.x 基礎語法速查手冊:從註釋到面向對象模擬全覆蓋

     編輯:關於C語言

Lua 5.x 基礎語法速查手冊:從註釋到面向對象模擬全覆蓋

Lua 是輕量級嵌入式腳本語言,廣泛用於遊戲開發、配置系統、自動化腳本。本文系統整理語法核心:註釋、控制流、賦值、運算符、關鍵字、八大類型、表、函數、面向對象模擬、協程基礎,適合有 C/Java 基礎開發者快速上手。

一、註釋

  • 單行:-- 註釋內容
  • 多行:--[[ 註釋內容 --]](支持嵌套 --[=[ [=[ ]=] ]=])

二、控制流結構

-- if-elseif-else
if cond then ... elseif cond then ... else ... end

-- while
while cond do ... end

-- repeat-until (至少執行一次)
repeat ... until cond

-- 數值 for
for var = start, stop, step do ... end  -- step 默認 1

-- 泛型 for (遍歷表/迭代器)
for k, v in pairs(t) do ... end
for i, v in ipairs(arr) do ... end

break 僅能跳出最內層循環,無 continue(5.2+ 可用 goto 模擬)。

三、賦值與多返回值

a, b, c = 1, 2, 3          -- 多賦值
a, b = b, a                  -- 交換變量
local x, y = 10, 20          -- 局部變量(默認全局)
x = x or default_val         -- 預設值模式

四、運算符優先級(高→低)

  1. ^(冪)
  2. not -(一元)
  3. * /
  4. + -
  5. ..(字符串連接)
  6. < > <= >= == ~=
  7. and
  8. or

五、邏輯運算特殊語義

  • 只有 false 和 nil 為假,0、空字符串、空表均為真。
  • a and b:a 假返回 a,否則返回 b。
  • a or b:a 真返回 a,否則返回 b。
  • 模擬三元運算:x = a and b or c(需 b 非假)。

六、八大基本類型

類型說明示例
nil空值,未初始化變量默認值print(type(nil)) --> "nil"
booleantrue/false
number雙精度浮點(Lua 5.3+ 有整數子類型)4, 0.4, 4.57e-3
string不可變字節序列,可含 '\0'"abc", [[多行]]
table關聯數組,鍵值任意類型(除 nil){key=val, [1]=2}
function第一類值,可賦值、傳參、返回function() end
userdata宿主 C 數據(結構體、指針)封裝C API 創建
thread協程,非 OS 線程coroutine.create

七、表:Lua 核心數據結構

-- 構造
local t = { 10, 20, key = "val", [3] = 30 }
t.newKey = "new"           -- 動態添加
t[1] = nil                 -- 刪除

-- 遍歷
for k, v in pairs(t) do print(k, v) end   -- 所有鍵值
for i, v in ipairs(t) do print(i, v) end  -- 連續整數鍵 1..#t

-- 作為數組
print(#t)                    -- 長度運算符(連續整數鍵邊界)

八、函數:第一類值與多返回值

-- 定義
function add(a, b) return a + b end
local add = function(a, b) return a + b end  -- 匿名函數賦值

-- 可變參數
function sum(a, b, ...)
    local args = {...}  -- 5.1 用 arg 表,5.2+ 直接 ...
    local s = a + b
    for _, v in ipairs(args) do s = s + v end
    return s
end

-- 多返回值
function swap(a, b) return b, a end
x, y = swap(1, 2)  -- x=2, y=1

九、面向對象模擬

-- 類表
local Account = { balance = 0 }
function Account:deposit(v) self.balance = self.balance + v end
function Account:withdraw(v) self.balance = self.balance - v end

-- 創建實例(原型繼承)
local a = { balance = 100 }
setmetatable(a, { __index = Account })
a:deposit(50)  -- 等價 Account.deposit(a, 50)

-- 殘元方法
mt.__add = function(a,b) return a.value + b.value end

十、協程基礎

co = coroutine.create(function()
    for i=1,3 do print("co", i); coroutine.yield() end
end)
coroutine.resume(co)  -- 啟動/恢復
coroutine.status(co)  -- "suspended"/"dead"
coroutine.wrap        -- 返回函數封裝

常用標準庫速查

  • string:sub, find, match, gsub, format
  • table:insert, remove, sort, concat, unpack
  • math:random, floor, ceil, min, max
  • os:time, date, clock, getenv, execute
  • io:open, read, write, lines, close
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved