@lua

動態 列表
@cyp3x6rl

Lua中的變量與賦值方法

看以下案例: test.lua -- 第一個lua腳本 --註釋使用“--”符 --變量未定義時,默認初始化的值為nil --這樣的定義為全局 num1 = 1 ; --加了關鍵字local表示這個變量是局部變量 local num2 = 2 ; --定義變量的末尾不加分號;也是可以的,個人建議,因為Lua是C寫的,寫分號還是規範點 num3 = 3 --定義一個函數,目的是實現兩數相加並返回

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@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

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua基礎之運算符的使用示例

眾所周知,C,C++,python等語言都有運算符,那麼Lua也不例外,因為它是C寫的嘛! Lua分為主要三類運算符,分別是算術運算符,關係運算符,邏輯運算符,還有特殊運算符。 1、算術運算符有: + (加) -(減) *(乘) /(除) %(取模) ^(求冪) -(符號) 來看一個例子:test6.lua num1 = 4 ; num2 = 2 ; print(num1+num2); print

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua一維數組與多維數組的使用示例

Lua語言中,數組和C還是有區別的,Lua的數組下標從1開始計數,而C語言的數組下標從0開始計數,我想這可能是設計Lua的人想要符合人的思維習慣而去這麼設計的。 數組,也就是按相同類型,在內存中順序排列的一個組合,這點跟C基本沒多大的差別。 接下來看1個例子: test7.lua --一維數組,數組的成員是字符串 array = {"Lua","Study"}; for i = 1 , 2 do

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua基礎迭代器的使用實例

迭代器(iterator)是一種對象,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器對象代表容器中的確定的地址 在Lua中迭代器是一種支持指針類型的結構,它可以遍歷集合的每一個元素。 迭代器的種類主要有:泛型for迭代器、無狀態的迭代器、多狀態的迭代器 下面看幾個例子: ipairs.lua name = {"YYX","HJZ"}; --以下稱為泛型for迭代器 --其中key表示索

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua協同程序coroutine的簡介及優缺點

什麼是協同(coroutine)? Lua 協同程序(coroutine)與線程比較類似:擁有獨立的堆棧,獨立的局部變量,獨立的指令指針,同時又與其它協同程序共享全局變量和其它大部分東西。 協同是非常強大的功能,但是用起來也很複雜。 線程和協同程序區別 協程是編譯器級別的,線程是操作系統級別的,在多處理器情況下,多線程程序同時運行多個線程;而協同程序是通過協作來完成,在任一指定時刻只有一個協同程序

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua面向對象編程之基礎結構table簡例

面向對象編程 (Object Oriented Programming,OOP)是一種非常流行的計算機編程架構。 Lua中最基本的結構是table,所以需要用table來描述對象的屬性。 Lua中的function可以用來表示方法。那麼Lua中的類可以通過table + function模擬出來。 簡例: -- Czhenya Lua 面向對象 -- 對於一個對象來説, 屬性 方法 --[[ 兩種

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

phpredis執行LUA腳本示例代碼

前言 本文主要給大家介紹了關於phpredis執行LUA腳本的相關內容,分享出來供大家參考學習,下面話不多説了,來一起看看詳細的介紹吧 示例代碼 $lua = EOT local kws = {} local lrkws = {} local nkws = {} local kw_ids = {} local lr_ids = {} local n_ids = {} f

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua遊戲開發教程之時區問題詳解

前言 什麼是Lua? Lua 是一個小巧的腳本語言,巴西里約熱內盧天主教大學裏的一個研究小組於1993年開發,其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。Lua由標準C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。一個完整的Lua解釋器不過200k,在目前所有腳本引擎中,Lua的速度是最快的。這一切都決定了Lua是作為嵌入式腳本的最佳選擇。相比Python和Pe

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

lua讀取redis數據的null判斷示例代碼

前言 為什麼要用lua腳本操作redis數據庫? 1.減少開銷–減少向redis服務器的請求次數 2.原子操作–redis將lua腳本作為一個原子執行 3.可複用–其他客户端可以使用已經執行過的lua腳本 4.增加redis靈活性–lua腳本可以幫助redis做更多的事情 lua腳本本身體積小,啓動速度快. 因此,從redis 2.6.0開始,redis在服務器端內置lua解釋器

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

OpenResty中正則模式匹配的2種方法詳解

前言 本文介紹 OpenResty 的兩種正則模式匹配。 首先需要説明的是,OpenResty 套件中包含了兩種語法:一種是主要基於 FFI API 實現的 OpenResty 語法,一種是類原生 Lua 腳本語言的語法。 在本文所介紹的內容中,對應以上兩種語法的正則模式匹配分別是 ngx.re.find 和 string.find 。 這兩種規則起到完全相同的作用:在 subject strin

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

利用Lua定製Redis命令的方法詳解

Redis作為一個非常成功的數據庫,提供了非常豐富的數據類型和命令,使用這些,我們可以輕易而高效地完成很多緩存操作,可是總有一些比較特殊的問題或需求需要解決,這時候可能就需要我們自己定製自己的 Redis 數據結構和命令。 Redis命令問題 線程安全問題 我們都知道 Redis 是單線程的,可是它怎麼會有 線程安全 問題呢? 我們正常理解的線程安全問題是指單進程多線程模型內部多個線程操作進

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@cyp3x6rl

Lua Table轉C# Dictionary的方法示例

table特性 table是一個“關聯數組”,數組的索引可以是數字或者是字符串,所有索引值都需要用 "["和"]" 括起來;如果是字符串,還可以去掉引號和中括號; 即如果沒有[]括起,則認為是字符串索引 table 的默認初始索引一般以 1 開始,如果不寫索引,則索引就會被認為是數字,並按順序自動從1往後編; table 的變量只是一個地址引用,對 table 的操作不會產生數據影響 table

cyp3x6rl 頭像

@cyp3x6rl

昵稱 cyp3x6rl

@aitaokedemiehuoqi

Lua中設置table為只讀屬性的方法詳解

項目中部分只讀表易被人誤改寫,故決定在非線上環境裏對這些表附加只讀屬性,方便在出現誤改寫的時候拋出lua錯誤,最終版代碼如下: --[[------------------------------------------------------------------------------ -** 設置table只讀 出現改寫會拋出lua error -- 用法 local cfg_proxy

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

Nginx+lua 實現調用.so文件

最近在和智能硬件部門一起,做一個室內定位的服務,該服務根據手機端傳過來的beacon設備列表,根據一定的算法計算出具體的商場,並將商場ID和beason設備列表作為參數,調用.so文件中的計算方法,得出位置數據(座標:x、y、z),返回給手機端。 因為服務對QPS要求比較高,並且都是純查詢操作,於是決定使用Nginx+lua+Redis的架構(該架構在公司內部已成主流,比較成熟)。下面我將對lua

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

linux系統安裝Nginx Lua環境

亦可參考官方安裝指南: lua-nginx-module Installation 這是我總結的安裝,供參考: 需要最新版的Nginx,LuaJIT,ngx_devel_kit,lua-nginx-module等安裝文件: Nginx LuaJIT Lua或者LuaJIT都是可以的,但是出於性能的考慮,推薦安裝LuaJIT ngx_devel_kit lua-nginx-modu

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

Lua中string.lower()使用指南

前言 今天我們總結的函數也比較簡單,函數的作用的將所給字符串的中的大寫字母轉換成小寫字母,這種操作往往出現在比較操作之前,比如驗證碼通常都是不區分大小寫的,接下來我們一起看一下函數的用法。 內容 string.lower() 原型:string.lower(s) 解釋:接收一個字符串,然後返回一個將字符串中大寫字母轉化為小寫字母的字符串副本,除此之外其他字符都不會被改變,大寫字母

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

Lua中基本的數據類型、表達式與流程控制語句講解

Lua類型 1.1 基本類型 Lua是一種動態類型語言,沒有類型定義的語法。Lua一共有8種基礎類型:nil(空)、boolean(布爾)、number(數字)、string(字符串)、userdata(自定義類型)、function(函數)、thread(線程)、table(表)。 函數type可根據一個值返回其類型名稱(字符串),如print(type(print)),輸出“f

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

解析Lua中的全局環境、包、模塊組織結構

模塊就是一個程序庫,而包是一系列模塊。Lua中可以通過require來加載模塊,然後得到一個全局變量表示一個table。Lua將其所有的全局變量保存在一個被稱為“環境”的常規table中。本文首先介紹環境的一些實用技術,然後介紹如何引用模塊及編寫模塊的基本方法。 環境 Lua將環境table保存在一個全局變量_G中,可以對其訪問和設置。有時我們想操作一個全局變量,而它的名稱卻存儲在另

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

深入解讀Lua中迭代器與泛型for的使用

泛型for原理 迭代器是一種可以遍歷集合中所有元素的機制,在Lua中通常將迭代器表示為函數,每調用一次函數,就返回集合中“下一個”元素。每個迭代器都需要在每次成功調用之間保持一些狀態,這樣才能知道它所在的位置及如何步進到下一個位置,closure就可以完成此項工作。下面的示例是列表的一個簡單的迭代器: function values(t) local i = 0 return function

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@aitaokedemiehuoqi

Lua中函數與面向對象編程的基礎知識整理

函數 基礎知識 調用函數都需要寫圓括號,即使沒有參數,但有一種特殊例外:函數若只有一個參數且參數是字面字符串或table構造式,則圓括號可有可無,如dofile 'a.lua',f{x=10, y=20}。 Lua為面向對象式的調用提供冒號操作符的特殊語法,如o.foo(o, x)等價於o:foo(x)。和Javascript類似,調用函數時提供的實參數量可以與形參數量不同,若實參

aitaokedemiehuoqi 頭像

@aitaokedemiehuoqi

昵稱 aitaokedemiehuoqi

@fairguard_anti_cheat

遊戲Lua加密方案

Lua以其小巧快速的特點已漸漸成為廣大遊戲開發者必修項,因此Lua的安全問題對於遊戲開發者亦是迫在眉睫。 一. Lua 在手遊中的使用場景 1.Cocos2dx 引擎 在 Cocos2dx 引擎中,可選的腳本語言主要有 Lua 與 Javascript。相對於 Javascript, 因 Lua 更適合製作非 h5 遊戲而被廣泛使用。 2.Unity3d 引擎 Unity3d 引擎的原生腳本語言

fairguard_anti_cheat 頭像

@fairguard_anti_cheat

昵稱 FairGuard

@xctech

Wireshark插件開發實戰-Lua解析自定義二進制協議

Wireshark插件開發實戰-Lua解析自定義二進制協議 在調試自定義 TCP 協議時,我們常常需要構造原始的二進制數據包並通過 Wireshark 進行抓包分析。這篇文章記錄使用lua開發Wireshark插件解析私有二進制協議。 使用 Python 構造二進制協議數據包 使用 nc(netcat)發送數據 通過 tcpdump 抓包 通過 Wireshark + lua插件解析數據

xctech 頭像

@xctech

昵稱 歆晨技術筆記