Nov 06 2025
cyp3x6rl -
Lua流程控制語句if else的使用示例
Lua提供了if語句和if else語句作為流程控制語句,當然,符合C的特點,流程語句之間可以實現嵌套操作,當然流程控制也可以和循環體結合進行控制。
1、if語句
if(布爾表達式)
then
--[ 在布爾表達式為 true 時執行的語句 --]
end
案例:test3.lua
i = 0 ; --定義一個變量i,並初始化為0
if i 5 --如果i 小於 5
then
whi
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua基礎之運算符的使用示例
眾所周知,C,C++,python等語言都有運算符,那麼Lua也不例外,因為它是C寫的嘛!
Lua分為主要三類運算符,分別是算術運算符,關係運算符,邏輯運算符,還有特殊運算符。
1、算術運算符有: + (加) -(減) *(乘) /(除) %(取模) ^(求冪) -(符號)
來看一個例子:test6.lua
num1 = 4 ;
num2 = 2 ;
print(num1+num2);
print
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua一維數組與多維數組的使用示例
Lua語言中,數組和C還是有區別的,Lua的數組下標從1開始計數,而C語言的數組下標從0開始計數,我想這可能是設計Lua的人想要符合人的思維習慣而去這麼設計的。
數組,也就是按相同類型,在內存中順序排列的一個組合,這點跟C基本沒多大的差別。
接下來看1個例子:
test7.lua
--一維數組,數組的成員是字符串
array = {"Lua","Study"};
for i = 1 , 2 do
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua基礎迭代器的使用實例
迭代器(iterator)是一種對象,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器對象代表容器中的確定的地址
在Lua中迭代器是一種支持指針類型的結構,它可以遍歷集合的每一個元素。
迭代器的種類主要有:泛型for迭代器、無狀態的迭代器、多狀態的迭代器
下面看幾個例子:
ipairs.lua
name = {"YYX","HJZ"};
--以下稱為泛型for迭代器
--其中key表示索
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua協同程序coroutine的簡介及優缺點
什麼是協同(coroutine)?
Lua 協同程序(coroutine)與線程比較類似:擁有獨立的堆棧,獨立的局部變量,獨立的指令指針,同時又與其它協同程序共享全局變量和其它大部分東西。
協同是非常強大的功能,但是用起來也很複雜。
線程和協同程序區別
協程是編譯器級別的,線程是操作系統級別的,在多處理器情況下,多線程程序同時運行多個線程;而協同程序是通過協作來完成,在任一指定時刻只有一個協同程序
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua面向對象編程之基礎結構table簡例
面向對象編程
(Object Oriented Programming,OOP)是一種非常流行的計算機編程架構。
Lua中最基本的結構是table,所以需要用table來描述對象的屬性。
Lua中的function可以用來表示方法。那麼Lua中的類可以通過table + function模擬出來。
簡例:
-- Czhenya Lua 面向對象
-- 對於一個對象來説, 屬性 方法
--[[ 兩種
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
phpredis執行LUA腳本示例代碼
前言
本文主要給大家介紹了關於phpredis執行LUA腳本的相關內容,分享出來供大家參考學習,下面話不多説了,來一起看看詳細的介紹吧
示例代碼
$lua = EOT
local kws = {}
local lrkws = {}
local nkws = {}
local kw_ids = {}
local lr_ids = {}
local n_ids = {}
f
lua
,
phpredis
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua遊戲開發教程之時區問題詳解
前言
什麼是Lua?
Lua 是一個小巧的腳本語言,巴西里約熱內盧天主教大學裏的一個研究小組於1993年開發,其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。一個完整的Lua解釋器不過200k,在目前所有腳本引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式腳本的最佳選擇。相比Python和Pe
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
lua讀取redis數據的null判斷示例代碼
前言
為什麼要用lua腳本操作redis數據庫?
1.減少開銷–減少向redis服務器的請求次數
2.原子操作–redis將lua腳本作為一個原子執行
3.可複用–其他客户端可以使用已經執行過的lua腳本
4.增加redis靈活性–lua腳本可以幫助redis做更多的事情
lua腳本本身體積小,啓動速度快.
因此,從redis 2.6.0開始,redis在服務器端內置lua解釋器
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
OpenResty中正則模式匹配的2種方法詳解
前言
本文介紹 OpenResty 的兩種正則模式匹配。
首先需要説明的是,OpenResty 套件中包含了兩種語法:一種是主要基於 FFI API 實現的 OpenResty 語法,一種是類原生 Lua 腳本語言的語法。
在本文所介紹的內容中,對應以上兩種語法的正則模式匹配分別是 ngx.re.find 和 string.find 。
這兩種規則起到完全相同的作用:在 subject strin
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
利用Lua定製Redis命令的方法詳解
Redis作為一個非常成功的數據庫,提供了非常豐富的數據類型和命令,使用這些,我們可以輕易而高效地完成很多緩存操作,可是總有一些比較特殊的問題或需求需要解決,這時候可能就需要我們自己定製自己的 Redis 數據結構和命令。
Redis命令問題
線程安全問題
我們都知道 Redis 是單線程的,可是它怎麼會有 線程安全 問題呢?
我們正常理解的線程安全問題是指單進程多線程模型內部多個線程操作進
lua
收藏
評論
Nov 06 2025
cyp3x6rl -
Lua Table轉C# Dictionary的方法示例
table特性
table是一個“關聯數組”,數組的索引可以是數字或者是字符串,所有索引值都需要用 "["和"]" 括起來;如果是字符串,還可以去掉引號和中括號; 即如果沒有[]括起,則認為是字符串索引
table 的默認初始索引一般以 1 開始,如果不寫索引,則索引就會被認為是數字,並按順序自動從1往後編;
table 的變量只是一個地址引用,對 table 的操作不會產生數據影響
table
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
Lua中設置table為只讀屬性的方法詳解
項目中部分只讀表易被人誤改寫,故決定在非線上環境裏對這些表附加只讀屬性,方便在出現誤改寫的時候拋出lua錯誤,最終版代碼如下:
--[[------------------------------------------------------------------------------
-** 設置table只讀 出現改寫會拋出lua error
-- 用法 local cfg_proxy
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
Nginx+lua 實現調用.so文件
最近在和智能硬件部門一起,做一個室內定位的服務,該服務根據手機端傳過來的beacon設備列表,根據一定的算法計算出具體的商場,並將商場ID和beason設備列表作為參數,調用.so文件中的計算方法,得出位置數據(座標:x、y、z),返回給手機端。
因為服務對QPS要求比較高,並且都是純查詢操作,於是決定使用Nginx+lua+Redis的架構(該架構在公司內部已成主流,比較成熟)。下面我將對lua
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
Lua中string.lower()使用指南
前言
今天我們總結的函數也比較簡單,函數的作用的將所給字符串的中的大寫字母轉換成小寫字母,這種操作往往出現在比較操作之前,比如驗證碼通常都是不區分大小寫的,接下來我們一起看一下函數的用法。
內容
string.lower()
原型:string.lower(s)
解釋:接收一個字符串,然後返回一個將字符串中大寫字母轉化為小寫字母的字符串副本,除此之外其他字符都不會被改變,大寫字母
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
使用Lua編寫Web端模板引擎的實例代碼分享
ltemplate.lua
local insert = table.insert
local remove = table.remove
local concat = table.concat
local format = string.format
local loaded = {}
local partten = "(.-){#([^#].-[^#])#}()"
local cont
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
Lua中基本的數據類型、表達式與流程控制語句講解
Lua類型
1.1 基本類型
Lua是一種動態類型語言,沒有類型定義的語法。Lua一共有8種基礎類型:nil(空)、boolean(布爾)、number(數字)、string(字符串)、userdata(自定義類型)、function(函數)、thread(線程)、table(表)。
函數type可根據一個值返回其類型名稱(字符串),如print(type(print)),輸出“f
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
解析Lua中的全局環境、包、模塊組織結構
模塊就是一個程序庫,而包是一系列模塊。Lua中可以通過require來加載模塊,然後得到一個全局變量表示一個table。Lua將其所有的全局變量保存在一個被稱為“環境”的常規table中。本文首先介紹環境的一些實用技術,然後介紹如何引用模塊及編寫模塊的基本方法。
環境
Lua將環境table保存在一個全局變量_G中,可以對其訪問和設置。有時我們想操作一個全局變量,而它的名稱卻存儲在另
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
深入解讀Lua中迭代器與泛型for的使用
泛型for原理
迭代器是一種可以遍歷集合中所有元素的機制,在Lua中通常將迭代器表示為函數,每調用一次函數,就返回集合中“下一個”元素。每個迭代器都需要在每次成功調用之間保持一些狀態,這樣才能知道它所在的位置及如何步進到下一個位置,closure就可以完成此項工作。下面的示例是列表的一個簡單的迭代器:
function values(t)
local i = 0
return function
lua
收藏
評論
Nov 06 2025
aitaokedemiehuoqi -
Lua中函數與面向對象編程的基礎知識整理
函數
基礎知識
調用函數都需要寫圓括號,即使沒有參數,但有一種特殊例外:函數若只有一個參數且參數是字面字符串或table構造式,則圓括號可有可無,如dofile 'a.lua',f{x=10, y=20}。
Lua為面向對象式的調用提供冒號操作符的特殊語法,如o.foo(o, x)等價於o:foo(x)。和Javascript類似,調用函數時提供的實參數量可以與形參數量不同,若實參
lua
收藏
評論
Nov 06 2025
FairGuard -
遊戲Lua加密方案
Lua以其小巧快速的特點已漸漸成為廣大遊戲開發者必修項,因此Lua的安全問題對於遊戲開發者亦是迫在眉睫。
一. Lua 在手遊中的使用場景
1.Cocos2dx 引擎
在 Cocos2dx 引擎中,可選的腳本語言主要有 Lua 與 Javascript。相對於 Javascript, 因 Lua 更適合製作非 h5 遊戲而被廣泛使用。
2.Unity3d 引擎
Unity3d 引擎的原生腳本語言
遊戲引擎
,
遊戲開發
,
lua
收藏
評論
Nov 06 2025
王林峯 -
webpack項目中使用grunt監聽文件變動自動打包編譯
【小技巧】webpack項目中使用grunt監聽文件變動自動打包編譯
分享背景:編寫npm插件的時候,在項目裏的測試html文件內引用需要從入口文件轉譯打包成ES5。因此測試時每次改動都需要手動需要npm run build一下,很麻煩。獲知grunt有個watch功能,折騰了一下,可以做到每次js文件改動時自動build一波,很靈性。
安裝依賴包
//安裝grunt
npm i grunt
grunt
,
webpack
收藏
評論