Nginx的扩展模块Lua一、概念二、特性三、应用场景四、lua的安装五、lua的语法第一个Lua程序Lua的注释标识符关键字运算符全局遍历&局部变量Lua数据类型Lua控制结构if then elseif elsewhile循环repeat循环for循环六、ngx_lua模块概念ngx_lua模块环境准备OpenRestryngx_lua的使用init_by_lua*init_work
记录所有需要记录的逻辑运算符认为 false 和 nil 是假(false),其他为真,0 也是 truestring是不可变量Lua 语法要求 break 和 return 只能出现在 block 的结尾一句(也就是说:作为 chunk的最后一句,或者在 end 之前,或者 else 前,或者 until 前)举个具体的例子,如果我们只想要 string.find 返回的第二个值。一个典型的方法
函数列表: table.insert(table,[ pos,] value) table.remove(table[, pos]) table.concat(table[, sep[, i[, j]]]) table.sort(table[, comp])1. insert 和 remove 只能用于数组元素的插入和移出, 进行插入和移出时,会将后面的元素对齐起来。   &n
逻辑运算符:“ || ” 与 “ && ” 是比较常用的逻辑运算符,分别是 或 和与。 或(||):双目运算符。两者中任一为真即为真。 与( &&):双目运算符。两者都为真时才为真,任一为假即为假。 但是,这两个运算符都有一个有趣的地方。请看下面的例子: [cpp]  view
转载 2024-08-20 10:46:47
46阅读
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:int i = 1;i = i << 2;  //把i里的值左移2位需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:int i = 0x40000000; //16进制的
所有testcpp里的widget示例都已实现,实现了一个GuiExample,其他的就留给大家去熟悉.其实无非就是将c代码拷贝到lua里然后修改一点...代码,pkg和示例 使用步骤: 1.解压下载包 2.将extensions下的Cocostudio/GUI文件夹备份,然后用解压的GUI文件夹覆盖原文件夹 3.将tools/tolua++文件夹备份,将pkg.zip解压到tools/tolua
1.= 赋值运算符 变量=表达式   如:a=3;将a的值赋为3 2./= 除后赋值    变量/=表达式 如:a/=3;即a=a/3 3.*= 乘后赋值    变量*=表达式 如:a*=3;即a=a*3 4.%= 取模后赋值 变量%=表达式 如:a%=3;即a=a%3 5.+= 加后赋值 &nb
转载 2024-09-23 21:59:50
91阅读
左移右移小总结@(组成原理)关于数的移位,特别需要注意正数,三码相同,所以无论左移还是右移都是补0.而负数的补码就需要注意,左移在右边补0,右移需要在左边补1,有一个很有趣的误区是,认为符号位保持不变,仅仅移动数据位,这是不对的,因为无论数据位还是符号位,都是二进制,在整体大迁移的过程中,符号位也是要跟随潮流的。只不过,为了保证右移后,和原来的符号数一样,因此,负数在右移时左边补1.比如8位机器数
转载 2024-05-27 12:25:22
196阅读
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 C语言提供的位运算符列表: 运算符 含义 描述 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 | 按位或 两个相应的二进制位中只要有一个为1,该位的结果值
  1、迭代器与闭包  迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素。  迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里。闭包提供的机制可以很容易实现这个任务。记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量。每次闭包的成功调用后这些外部
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:int i = 1;i = i << 2; //把i里的值左移2位也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方
转载 2024-02-12 21:47:35
386阅读
Lua是枚很小巧的语言,各种语法没有像C++等静态语言那么复杂和繁琐。相比起来,Lua显得非常的灵活和简单。但是也正是因为Lua“简单”,所以它才“复杂”。如果不认真严谨的规范好Lua的写法,它可能漏洞百出,加上编辑器大多没有像C++,C#,java那样的提示和补全,所以Lua写起来并不是那么的简单,稍不注意就可能有很多想不到的Bug。 总结一下最近开始写Lua的各方面的小技巧和需要注意
转载 2024-03-03 15:50:37
81阅读
 目录一、虚拟机篇 - 指令集存储数据结构Proto二、虚拟机篇 - Opcode的定义和宏函数三、虚拟机篇 - 核心函数luaK_codeABC和luaK_codeABx四、虚拟机篇 - 常量处理函数addk上一篇我们讲解了语义的解析编译过程。我们基本知道了Lua的代码是一遍解析文件,一遍编译成字节码指令的。这一节,我们主要讲一下lcode.c文件,Opcode是如何生成的。一、虚拟机
移动光标的方法 h 或 向左方向键(←) 光标向左移动一个字符 j 或 向下方向键(↓) 光标向下移动一个字符 k 或 向上方向键(↑) 光标向上移动一个字符 l 或 向右方向键(→) 光标向右移动一个字符 如果你将右手放在键盘上的话, 你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光 标。 如
转载 2024-05-30 08:57:56
271阅读
刚刚接触Lua语言,当然这里推荐看<<Programming in Lua>>原版或者中文版的书来学习。Lua是一种很简洁的脚本语言,全部是用C语言实现,并且全部开源,可以对照着源码学习。好了,正式开始:1. 基本语法 学习语言总是从“Hello world” 开始:Lua要打印一行文本很简单, print(“Hello world” )这一行代码即可,当然前提是你得配置好
个小巧的脚本语言,但缺乏强大的库的支持,一般配合C/C++等宿主语言,不单独使用。 一 环境     下载安装后,将lua主目录添加入环境变量比如LUA_HOME = f:\Program Files (x86)\Lua\5.1,启动控制台,输入lua,能进入lua控制台. 第一个lua脚本,  新建一个文本文件,输入print("hello worl
转载 2024-04-15 21:39:11
41阅读
 例子1:function func1(c, e) local a1, a2; c = 2;end 指令:CODE1    ADJUST   23    ADJUST   44    PUSH25    STORELOCAL07    ADJUST &nbsp
转载 2024-04-12 20:51:36
114阅读
元表概念Lua中,面向对向是用元表这种机制来实现的。元表是个很“道家”的机制,很深遂,很强大,里面有一些基本概念比较难理解透彻。不过,只有完全理解了元表,才能对Lua的面向对象使用自如,才能在写Lua代码的高级语法时游刃有余。首先,一般来说,一个表和它的元表是不同的个体(不属于同一个表),在创建新的table时,不会自动创建元表。但是,任何表都可以有元表(这种能力是存在的)。e.g. t = {}
lua51的require和modulemodulerequire参考 modulemodule的作用是创建一个table,并加入到全局的G表,可以让你全局访问。 同时会加入package.loaded表中。 比如: 有文件Assets.Scripts.Lua.logic.config.t_language_1.lua,请注意文件名和module是不同的。如下:module("Assets.Sc
转载 2024-04-22 21:47:17
22阅读
数据类型lua是动态语言类型,变量不需要类型定义,只需要为变量赋值lua有8个基本类型:数据类型描述nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean包含两个值:false和true。number表示双精度类型的实浮点数string字符串由一对双引号或单引号来表示function由 C 或 Lua 编写的函数userdata表示任意存储在变量中
转载 2024-02-16 22:36:37
55阅读
  • 1
  • 2
  • 3
  • 4
  • 5