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

Lua 從入門到精通:語句、控制結構、表達式與函數全解析

     編輯:關於C語言

Lua 語句概覽

Lua 的執行單元稱為「語句組」,即一串依序執行的語句。語句間可用分號或換行分隔。語句組會被編譯為虛擬機指令再解釋執行,亦可編譯為二進制檔案,兩者可互換。

賦值語句

支援多重賦值,從左到右依次對應:

local x, y = 10, 20     -- x=10, y=20
local x, y = 10         -- x=10, y=nil
local x, y = 10, 20, 30 -- x=10, y=20, 30 被捨棄

函數回傳多值時自動填入右值序列:

function getFrame() return 0, 0, 320, 568 end
local x, y, w, h = getFrame() -- x=0, y=0, w=320, h=568

賦值前先計算所有右值表達式,再執行賦值,故 i, a[i] = i+1, 20 會設 a[3]=20 而非 a[4]。交換變數:x, y = y, x。

控制結構

  • while exp do block end
  • repeat block until exp(條件可見迴圈內區域變數)
  • if exp then block {elseif exp then block} [else block] end

條件判斷:false 和 nil 為假,其餘(含 0、空字串)為真。
return 可回傳多值;break 跳出最內層迴圈;return/break 僅能出現在區塊末尾(需置中可用 do return end)。

for 迴圈三種形式

  1. 數值迴圈:for v = var, limit, step do block end(三控制式僅計算一次,v 為區域變數)
  2. 泛型迴圈:for k, v in pairs(t) do block end 遍歷所有鍵值
  3. 泛型迴圈:for k, v in ipairs(t) do block end 僅遍歷連續整數鍵(1,2,…),遇 nil 停止

pairs vs ipairs 差異:ipairs 遇 nil 即止,pairs 遍歷所有鍵。

表達式與運算子

邏輯運算子

a and b  -- a 假則回傳 a,否則回傳 b
a or b   -- a 真則回傳 a,否則回傳 b
not a    -- 回傳 true/false

短路求值,and 優先級高於 or。實用技巧:x = x or v 給預設值。三元運算 (a and b) or c。

字串連接

.. 運算子:"hello" .. "world" → "helloworld"。數字自動轉字串:4 .. 5 → "45"(字串型)。

Table 建構器

-- 陣列式
days = {"Sunday","Monday",...}  -- 索引從 1 開始
-- 記錄式
a = {x = 10, y = 20}            -- 等同 a={}; a.x=10; a.y=20
-- 通用式
opnames = {["+"]="add", ["-"]="sub"}
-- 尾隨逗號、分號混用皆合法
a = {x=10, y=20; "one", "two"}

長度運算子 #

字串長度 = 位元組數。Table 長度為最大整數索引 n 使 t[n]!=nil 且 t[n+1]==nil;有「洞」時結果不定。

運算子優先級(低→高)

or and < > <= >= ~= == .. + - * / % not # - (unary) ^

.. 和 ^ 右結合,其餘左結合。

函數

  1. 上一篇文章:
  2. 下一篇文章:
欄目導航
Copyright © 程式碼之家 All Rights Reserved