Below you will find pages that utilize the taxonomy term “Lua”
Posts
Lua - Assignment
Lua 的賦值語法如下:
variable1[, variable2 ...] = value1[, value2 ...] 簡單說就是先寫要被賦值的變數,接著帶上賦值運算子 =,然後再帶入要賦予的值即可。像是下面這樣:
local a = 1 local b = 2 print(a) print(b) 若要一次賦予多個變數,可用逗號隔開帶上數個要被賦值的變數與要賦予的值。要賦予的值會依序賦予給要被賦予的變數,如果賦予的值少於要被賦予的變數,那多餘的變數不會做賦值的動作,其值為 nil。如果賦予的值多餘要被賦予的變數,那多餘的賦予值會被忽略不處理。
local a, b = 1, 2 print(a) print(b) 賦值語法也可以拿來做數值的交換。
variable1, variable2 = value2, value1 像是下面這樣:
local a, b = 1, 2 a, b = b, a print(a) print(b) Link Programming in Lua : 4.1
read morePosts
Lua - String concatenation operator
Lua 的字串要作串接的話,可以使用 .. 運算子。該運算子能將前後的字串相加,若是運算子的前後為數值的話,則會轉成字串後再做相加。
程式寫起來會像下面這樣:
print("Hello " .. "World") print(0 .. 1) Link Programming in Lua : 3.4
read morePosts
Lua - If then else
Lua 的 if 寫法如下,if 後接進入的條件,then … end 區塊內帶入要運行的動作即可。
if condition then ... end 如果有多個分支條件,可以用 elseif 區塊帶上另外的分支條件,或是用 else 區塊指定所有分支條件條件都不滿足時要運行的動作。
if condition then ... elseif condition then ... else ... end 像是要寫個簡易的程式能讓使用者輸入來決定要運行的動作,就可以像下面這樣撰寫:
local input repeat input = io.read() if input == "y" then print("y") elseif input == "n" then print("n") else print("unknow") end until input == "exit" Link
read morePosts
Lua - Repeat until loop
Lua 的 repeat until 寫法如下,repeat until 區塊內帶入要運行的動作,until 後帶上要跳脫迴圈的條件即可。
repeat ... until condition 像是要簡單的跑迴圈五次,然後印出 1 到 5 的數值,就可以像下面這樣撰寫:
local idx = 1 local count = 5 repeat print(idx) idx = idx + 1 until idx > count Link Programming in Lua : 4.3.3
read morePosts
Lua - While loop
Lua 的 while 寫法如下,while 後面帶上要進入迴圈的條件,然後用 do…end 設定迴圈的區塊,在迴圈的區塊內帶入要運行的動作即可。
while condition do ... end 像是要簡單的跑迴圈五次,然後印出 1 到 5 的數值,就可以像下面這樣撰寫:
local idx = 1 local count = 5 while idx <= count do print(idx) idx = idx + 1 end Link Programming in Lua : 4.3.2
read morePosts
Lua - pairs and ipairs
Lua 內的 ipairs 可用來遍巡處理陣列,如果遍巡到非陣列元素,或是空值的話,遍巡動作即會中止。
所以像下面這樣的程式就不會將所有元素印出。
local data = {} data[1] = "Value1" data[2] = "Value2" data[4] = "Value4" data.Key1 = "Value4" for x, y in ipairs(data) do print("( " .. x .. ", " .. y .." )") end 若是使用 pairs,則可遍巡所有元素。
local data = {} data[1] = "Value1" data[2] = "Value2" data[4] = "Value4" data.Key1 = "Value4" for x, y in pairs(data) do print("( " .. x .. ", " .
read morePosts
Lua - Generic for
Lua generic for 語法要遍巡處理陣列的話,語法如下:
for idx[, value] in ipairs(array) do ... end 像是要遍巡陣列然後將陣列索引與陣列元素顯示出來,就可以像下面這樣撰寫:
local array = {} array[1] = "Value1" array[2] = "Value2" for idx, value in ipairs(array) do print(idx .. "." .. value) end 如果是要遍巡字典,語法會像下面這樣:
for key[, value] in pairs(dict) do ... end 像是要遍巡字典然後將字典內元素的鍵值與元素值顯示出來,就可以像下面這樣撰寫:
local data = {} data.Key1 = "Value1" data.Key2 = "Value2" for key, value in pairs(data) do print(key .. " = " .. value) end Link
read morePosts
Lua - Numeric for
Lua numeric for 的語法如下,for 後面設定迴圈內要使用的變數,變數後面用等號帶上數值的起點、終點、遞增/減值 設定值間用逗號隔開,然後用 do…end 設定迴圈的區塊,在迴圈的區塊內帶入要運行的動作即可。
for var=from,to[,step] do ... end 像是要簡單的跑迴圈五次,然後印出 1 到 5 的數值,就可以像下面這樣撰寫:
for i=1,5 do print(i) end 若是要跑迴圈印出 1、3、5,可像下面這樣調整遞增條件:
for i=1,5,2 do print(i) end Link Programming in Lua : 4.3.4
read morePosts
Lua - Arithmetic operators
Lua 的 Arithmetic operators 有 +、-、*、/、%、>=,這些運算符可用來做數值的運算。
Operator Description + 用來將前後數值相加 - 用來將前後數值相減 * 用來將前後數值相乘 / 用來將前後數值相除 % 用來將前後數值相除取模 ^ 用來將數值乘冪 - 用來將數值正負反轉 使用起來就像下面這樣:
print(1 + 2) print(1 - 2) print(1 * 2) print(1 / 2) print(7 % 4) print(2 ^ 2) print(-1) Link Lua 5.1 Reference Manual
read morePosts
Lua - Relational Operators
Lua 的 Relational operators 有 ==、~=、<、>、<=、>=,這些運算符可用來處理兩者間的關係,看是相等、不等、小於、大於、小於等於、還是大於等於,其運算結果都為布林值,不是 true 就是 false。
Operator Description == 用來判斷前者與後者是否相等 ~= 用來判斷前者與後者是否不相等 < 用來判斷前者是否小於後者 > 用來判斷前者是否大於後者 <= 用來判斷前者是否小於等於後者 >= 用來判斷前者是否大於等於後者 使用起來就像下面這樣:
print(1 == 2) print(1 ~= 2) print(1 < 2) print(1 > 2) print(1 <= 2) print(1 >= 2) Link Lua 5.1 Reference Manual
read morePosts
Lua - Logical operators
Lua 的邏輯運算會將 false 與 nil 視為 false,其它值視為 true。
所以 and、or 運算寫起來就會像下面這樣。
print(10 or 20) print(true or false) print(nil or "a") print(nil and 10 ) print(true and false) print(false and nil) print(false or nil) print(10 and 20) and、or 運算也可以用作三元運算處理,最前面是條件值,然後用 and 運算接條件成立時要回傳的值,再 or 運算接條件不成立時要回傳的值即可。
print(true and 1 or 2) print(false and 1 or 2) 至於 not 運算就是把 true、false 反轉。
print(not true) print(not false) print(not nil) print(not 1) Link [Lua] 邏輯運算 « Huli’s Blog Lua 5.
read morePosts
redis-lua - A Lua client library for the redis key value storage system
redis-lua 是 Lua 的 Redis client 套件,能讓 Lua 具備存取 Redis 的能力。
因為相依於 LuaSocket 套件,所以必須先用 LuaRocks 安裝 LuaSocket 套件。
luarocks install luasocket 相依套件安裝好,就可以進行 redis-lua 套件的安裝。
luarocks install redis-lua 都安裝好了就可以開始在程式中使用 redis-lua 對 Redis 進行存取。
使用上需先加入 redis-lua 套件。
local redis = require 'redis' 然後進行對 redis 的連線。
local client = redis.connect(ip, port) 如果 redis 有設定認證,可調用 auth 命令並帶入對應的密碼。
client:auth(password) 接著就可以視需要調用其它 Redis 的命令。
Link nrk/redis-lua: A Lua client library for the redis key value storage system.
read morePosts
LuaRocks - The Lua package manager
LuaRocks 是 Lua 的套件管理程式,可在官網找到下載頁面。
點選下載所要使用的版本。
安裝包下載下來後,解壓縮即可進行安裝,但是安裝前需先確定是否已裝有 Lua binary,如果 Lua binary 已經備妥,可以運行 ‘install.bat’ 進行 LuaRocks 的安裝。
因為 LuaRocks 需要 C compiler,MinGW 或是 Microsoft compiler 都可以,所以這邊筆者直接使用 Visual Studio 內建的命令列模式來操作。
設定 LuaRocks 的路徑。
就可以用 LuaRocks install 安裝指定的 Lua 套件。
LuaRocks install <LuaPackage> Link LuaRocks - The Lua package manager
read morePosts
Lua for Windows - A 'batteries included environment' for the Lua scripting language on Windows
在 Winwodw 下要使用 Lua binary,可下載 Lua for Windows。
下載後點擊安裝即可。
Link rjpcomputing/luaforwindows: Lua for Windows is a ‘batteries included environment’ for the Lua scripting language on Windows.
read more